perm filename MONCOM.BH[S,DOC]17 blob
sn#591830 filedate 1981-05-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00144 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00016 00002 STANFORD ARTIFICIAL INTELLIGENCE LABORATORY August, 1978
C00019 00003 1 INTRODUCTION FOR NEW USERS
C00020 00004 1.1 Introduction to Timesharing
C00029 00005 1.2 Timesharing at the AI Lab
C00039 00006 1.3 Introduction to Terminals
C00049 00007 1.4 Typing Commands to the Monitor
C00056 00008 1.5 File Storage
C00066 00009 1.6 LOGIN and KJOB Commands
C00070 00010 1.7 Editing Commands
C00075 00011 1.8 Commands for Compiling and Running Programs
C00079 00012 1.9 Information Commands
C00082 00013 1.10 Programs and Core Images
C00086 00014 2 DISPLAY TERMINALS
C00088 00015 2.1 DD and III Keyboards
C00096 00016 2.2 The Line Editor
C00111 00017 2.3 Line Editor Activation
C00120 00018 2.4 ESCAPE and BREAK Commands
C00130 00019 2.5 The WHO Line
C00146 00020 2.6 Page Printer Control
C00153 00021 2.7 Data Disc Control
C00155 00022 Virtual Terminals
C00162 00023 Keyboard Mapping
C00173 00024 Video Switch Commands
C00182 00025 Spying on Hidden Terminals
C00185 00026 2.8 III Control
C00187 00027 2.9 Audio Switch Control
C00195 00028 2.10 Datamedias
C00212 00029 3 NON-DISPLAY TERMINALS
C00219 00030 3.1 Non-display ESCAPE commands
C00226 00031 3.2 The TTY Command
C00233 00032 4 BASIC MONITOR COMMANDS
C00234 00033 4.1 Running Programs
C00238 00034 4.2 Manipulating Core Images
C00245 00035 4.3 Starting Programs
C00250 00036 4.4 Detached Jobs
C00257 00037 4.5 Device Control
C00270 00038 4.6 System Information
C00280 00039 4.7 Miscellaneous Commands
C00285 00040 5 SYSTEM PROGRAM COMMANDS
C00287 00041 5.1 LOGIN
C00318 00042 5.2 LOGOUT
C00326 00043 5.3 SNAIL
C00329 00044 5.4 COPY and SPOOL
C00332 00045 5.5 MAIL
C00335 00046 5.6 DART
C00337 00047 5.7 DO
C00343 00048 5.8 ZERO
C00346 00049 5.9 WHO
C00353 00050 WHO commands
C00367 00051 5.10 FIND
C00379 00052 5.11 Other System Information Programs
C00390 00053 5.12 Miscellaneous System Programs
C00400 00054 6 PRIVILEGED COMMANDS
C00407 00055 A1 SNAIL
C00409 00056 A1.1 EDIT-Class Commands
C00418 00057 A1.2 COMPILE-Class Commands
C00420 00058 A1.3 DOCUMENT-Type COMPILE-Class Commands
C00422 00059 A1.4 LOADBUF-Type COMPILE-Class Commands
C00427 00060 A1.5 COMPILE-Type COMPILE-Class Commands
C00438 00061 More on File Names
C00440 00062 More on Switches
C00442 00063 Concatenation of Source Files
C00445 00064 Producing Symbolic Listings
C00449 00065 Generating Core Images and DMP Files
C00454 00066 Library Searches
C00457 00067 Alternate Processor Features
C00461 00068 Translator Switches
C00463 00069 Loader Switches
C00465 00070 Command Files
C00468 00071 A1.6 CREF Command
C00469 00072 A1.7 Switch Function Summary
C00473 00073 A1.8 LOADER Switches and LINK Equivalents
C00477 00074 A1.9 Error Messages
C00482 00075 A2 COPY
C00483 00076 Syntax
C00486 00077 General Operation
C00497 00078 Device Peculiarities
C00503 00079 Switches
C00532 00080 Monitor Commands
C00535 00081 Examples
C00538 00082 A3 SPOOL
C00547 00083 Delayed Listing
C00549 00084 Page Selection
C00550 00085 Multiple Copies of a File
C00551 00086 A3.1 XSPOOL Special Features
C00563 00087 A3.2 QSPOOL Command
C00568 00088 A3.3 UNSPOOL Command
C00571 00089 A4 MAIL
C00572 00090 The MAIL program
C00579 00091 A4.1 Command Format
C00588 00092 Destinations and Destination Lists
C00598 00093 Message Formats
C00606 00094 Message File Formats
C00609 00095 Command Switches
C00624 00096 Dates and Times
C00633 00097 Wildcard Dates and Expiration Counts
C00636 00098 A4.2 Mail to Other ARPA Network Hosts
C00648 00099 A4.3 The MAIL Command
C00663 00100 A4.4 The SEND Command
C00667 00101 A4.5 The REMIND Command
C00670 00102 A4.6 The GRIPE Command
C00673 00103 A4.7 The EVENT Command
C00677 00104 A4.8 The PLAN Command
C00680 00105 A4.9 The RETRY Command
C00681 00106 A4.10 The LATER Command
C00687 00107 A4.11 The BATCH Command
C00695 00108 A4.12 The REENTER Error Recovery Facility
C00700 00109 A4.13 Hand-Holding Mode
C00702 00110 A4.14 Interfacing to MAIL from Other Programs
C00713 00111 A4.15 The CANCEL Command
C00715 00112 A4.16 The RCV Command
C00740 00113 A5 DART
C00748 00114 A6 SERVICE LEVEL SYSTEM (RSL)
C00754 00115 Using the RSL Program
C00756 00116 IMPORTANT!
C00757 00117 How to Reserve Devices
C00759 00118 Other Commands Available
C00762 00119 RSL Command Syntax
C00765 00120 Semantics
C00768 00121 A7 FIXIMLAC
C00770 00122 A8 ARPA NETWORK
C00775 00123 A8.1 The User TELNET
C00787 00124 A8.2 Control Commands to TELNET, PTYJOB, and DIAL
C00799 00125 A8.3 Datamedia Simulation
C00801 00126 A8.4 SUPDUP
C00807 00127 A8.5 The File Transfer Protocol
C00831 00128 Multiple File Transfer
C00847 00129 One-line FTP transfers
C00853 00130 A9 CARE AND FEEDING OF DEVICES
C00854 00131 A9.1 The Line Printer
C00859 00132 A9.2 DECtapes
C00861 00133 A9.3 Magnetic Tapes
C00866 00134 A9.4 Xerox Graphics Printer
C00872 00135 A9.5 User Disk Pack
C00876 00136 A9.6 Core Storage
C00883 00137 A10 HOW TO START WAITS
C00884 00138 FIND A WIZARD:
C00885 00139 CONTINUING THE SYSTEM:
C00887 00140 RELOADING:
C00891 00141 A11 MONITOR ERROR MESSAGES
C00938 00142 A12 BIBLIOGRAPHY
C00942 00143 A13 STANFORD CHARACTER SET
C00949 00144 INDEX
C00986 ENDMK
C⊗;
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY August, 1978
OPERATING NOTE 54.6
MONITOR COMMAND MANUAL
(Fourth Edition)
by
Brian Harvey
ABSTRACT
This document describes the monitor commands available to users of
the WAITS timesharing system at the Stanford Artificial Intelligence
Laboratory, and the use of the terminals connected to this system. The
first section is an introduction to the system for new users. Several
appendices are included containing documentation of commonly used system
programs. This manual supersedes SAILON 54.5.
This work was supported by the Advanced Research Projects Agency
of the Office of the Secretary of Defense under contract MDA903-76-C-0206.
ACKNOWLEDGMENTS
Several sections of this document were excerpted from program
documentation written by others. Contributors include Mike Clancy, Mark
Crispin, Bo Eross, Martin Frost, Ralph Gorin, Dick Helliwell, Andy Moorer,
Jeff Rubin, Jim Stein, and Dan Swinehart. John McCarthy wrote the
Introduction to Timesharing section, and Mark Crispin, Martin Frost, Ralph
Gorin and Brian McCune edited and corrected the manual's draft versions.
This document was produced on the Xerox Graphics Printer using the PUB
program written by Larry Tesler and improved by Rich Johnsson, Pitts
Jarvis, and Tovar. Thanks also to Martin Frost for editing the Third
Edition while I was away, and to Mark Faust for help and moral support
while I was editing this edition.
1 INTRODUCTION FOR NEW USERS
This manual describes the monitor commands used in the PDP-10 computer
system at the Stanford Artificial Intelligence Laboratory. The first
section is an introduction for new users, including brief explanations of
terminals, file storage, and some of the essential monitor commands. The
computer is operated exclusively as a timesharing system, and the section
begins with an introduction to timesharing.
1.1 Introduction to Timesharing
A timesharing computer system includes the computer itself (in our case a
PDP-10 computer made by the Digital Equipment Corporation), user terminals
for input to and output from the computer (in our case about 60 keyboard and
display terminals), and a file system that keeps programs, data for the
programs, reports, and other data for the users.
The basic idea of timesharing is to allow each user to behave as though he
had a computer to himself controlled from his terminal. This is
accomplished by having the computer cycle its attention among the users
wanting service in rotation. It does this fast enough so that small
requests are serviced in a time that ranges from a small fraction of a
second to a few seconds, depending on the number of people demanding service
at that instant. If the desired computation is long, the computer will do a
bit of it, then service other people, then return to it, and so on until the
computation is done. The time taken will depend on the size of the
computation and how busy the machine is.
At any time the user's terminal is interacting with some program. These
programs include the timesharing monitor; editors used to prepare programs,
documents, reports and other data; various utility programs; and the user's
own programs.
When you first sit down at a terminal, you will be interacting with the
monitor, and you can always get back to the monitor by pressing the CALL key
on the terminal. The first thing you have to do is to log in, which tells
the monitor who you are so it can connect you to the file directory that
contains your files and can do its accounting. The last thing you do is log
out so that the terminal and other resources you have been occupying can be
used by someone else.
You will have a certain quota of disk space and will be able to keep files
such as programs between uses of the computer. Therefore, you will not
ordinarily need any external form of storage such as punched cards or
magnetic tape. (Our computer doesn't even have punched card equipment.)
A user gets service from programs by typing commands to the monitor. Some
monitor commands perform the service and leave you again talking to the
monitor. Others cause a program to be started; thereafter, you have to
interact with that program in the way prescribed by it. When you are done
with it, you go back to the monitor.
Your program also gets service from the monitor by means of special
instructions, called UUOs, used in the program. The monitor provides many
different services as a sort of subroutine of your program; most
importantly, it is responsible for allocating resources, like core storage
and input/output devices, among different jobs. Therefore, input and output
must be done through the monitor to avoid conflicts. These UUOs are
documented in their own manual; this one is about the commands you type at
your terminal.
A typical task is to write a program in some computer language such as SAIL
(our dialect of ALGOL) or LISP and then debug the program by running it,
checking the results, and changing it until it gives the right answers.
This is accomplished in the following steps:
1. First you run an editor. (We have several, but the current favorite is
called E.) The editor reads whatever you type and displays it; what you
type becomes the text of the program you are writing. However, the editor
gives you convenient facilities for going back in your text and making
changes that you think of as you go along. Most people don't write their
programs on paper, but make them up as they use the editor. When the
program is ready to try, you exit from the editor back to the monitor, and
your program is a file on the disk with a name you have given it. At any
time, you can re-edit this file to make changes in it. You can also print
it on the line printer to take a copy home, and when you don't need it any
more you can delete it.
2. Normally, the next step is to call a compiler to translate the program
from a source language into machine language, call the loader to load it
into your core image, and finally ask the computer to run it. You can do
these things as separate operations, but facilities are provided for
initiating all of this with a single command.
3. When the computer runs your program, it may just produce answers and
stop. If you like the answers, perhaps you are done. Otherwise, you go
back to the editor to make changes in the source file and try again. On the
other hand, you may have written an interactive program which expects you to
type input on the terminal. It interprets your input and gives output, then
asks for more input, etc. Your program may read files and write them. It
may display pictures on your terminal. Also, it may interact with the
physical world by reading pictures from one of the TV cameras attached to
the computer and by waving the mechanical arm.
4. In order to debug a program, you may have to do more than just look at
the output. Therefore, the timesharing system has facilities for examining
and changing the contents of registers and for putting break-points in
programs.
1.2 Timesharing at the AI Lab
Our timesharing system, called WAITS, runs on a Digital Equipment
Corporation (DEC) PDP-10 computer. This is a 36-bit machine designed for
timesharing applications. We currently have 917,504 words of core storage
online and expect to have over 2 million words online in the not-too-distant
future. Our timesharing system, derived from old DEC software, has been
extensively modified for our special requirements.
Programming languages available here include SAIL, a version of ALGOL with
added features for backtracking, list processing, associative processing,
and coroutining; several versions of LISP; FAIL, our PDP-10 assembly
language; and the MICRO-PLANNER problem solving language.
To use the computer, you must type a LOGIN command at your terminal. (See
Section 1.6 for a description of this command.) The monitor assigns you a
job number, which it uses internally to keep track of you. Associated with
your job are various resources, of which the most important is the core
image, i.e., the simulated core storage maintained for you by the monitor so
that your program can use addresses starting from zero although it may
really be located anywhere in core while running. Your job only has one
core image; if you type a monitor command which causes a program to be run,
that program replaces your old core image. There is no way for one job to
run two programs at once.
As a user of the Stanford AI Lab system, you will be given a programmer name
to identify you to the computer. The main reason for this is so that the
monitor knows which files on the disk storage belong to you. This name will
probably be your initials. When you log in, you must type in this name,
along with a project name which allows you to divide your files into
separate groups for the various projects you are working on. For example,
if you are doing homework for a Computer Science course, the course number
might be your project name. The combination is called a project-programmer
name or PPN and is typed PRJ,PRG or sometimes [PRJ,PRG] when used in a file
specification. It is possible to switch your attention from one project to
another without having to log out and log in again by giving a monitor
command to change your alias or disk PPN, the PPN used for file access if
you do not specify a file directory explicitly. Therefore, many users
always log in using a single "master" project name; project "1" is the
conventional name for this purpose.
Ours is just about the most heavily used computer we know of. It's hard to
get good service, especially weekday afternoons. Therefore, please be
careful about leaving jobs logged in when you leave, and don't play Spacewar
during the day! Even a job which is not running uses up scarce resources.
The system will automatically log out a job which has not run a program for
ten minutes (an hour at night), even if the job is waiting for the user to
type something on the terminal. For example, if you are editing a file and
have made changes which have not yet been written on the disk, your changes
will be lost if you are logged out automatically for not running for a
while. A warning message is typed five minutes before the actual logout.
You can prevent autologout by typing the monitor command ENABLE LIV (see
Section 6), but it is antisocial to do this routinely. If you are logged
in at a Data Disc terminal, and there are no free Data Disc channels, and
you would be eligible for logout but have enabled LIV, your job will be
detached, so the job will stay around but your terminal will be freed for
other users.
Sometimes the system stops working while you are using it. You will notice
that characters you type no longer appear on your terminal. In many cases,
the system fixes itself after a few seconds, so all that happens is that a
few characters you typed are lost. Otherwise, someone has to go fix it
manually. Sometimes it can be gotten to work again so that you can just
continue with what you were doing. Other times, a new copy of the system is
loaded and you have to start over again. This is called reloading. If this
happens, you will see a message to that effect on your terminal. When
editing, it is a good idea to save your file on the disk every so often in
case the system crashes. If the system crashes and nobody is around to fix
it, you may have to reload it yourself. See Appendix 10 to find out how.
Sometimes the system is stopped intentionally for software or hardware
maintenance. This downtime is scheduled in advance, and part of the system
messages you see when you log in is a maintenance schedule. Some time
before the system is taken down for scheduled maintenance, you will see a
warning on your terminal which counts down to the end. This warns you to
save any files you are writing and stop what you are doing. Such
maintenance is often scheduled between 5 and 7 weekday evenings.
This document, the Monitor Command Manual, describes the use of monitor
commands typed in at terminals. Another manual describes the UUOs,
instructions used by programs to communicate with the monitor. Other system
information, including documentation of specific system programs, can be
found in some printed manuals and on the disk; look at the [S,DOC] and
[UP,DOC] file directories for program documentation. Some system programs,
which are invoked by special monitor commands, are written up in appendices
to this manual. Most of these appendices are derived from [UP,DOC] files.
Some of those files are updated more frequently than this manual and some
aren't. Caveat emptor.
1.3 Introduction to Terminals
A computer terminal is a typewriter-like device which is used to communicate
with the computer. You talk to the computer through a keyboard like that of
an ordinary typewriter. If you are using a hardcopy terminal, then the
computer talks to you by printing on a sheet of paper, again like an
ordinary typewriter. However, you may be using a display terminal, in which
case a TV-like display screen is used for output instead of a sheet of
paper. Almost all of the terminals within the laboratory building are
display terminals. The display terminals at the lab differ from most
terminals in that they use a special character set. That is, many special
characters can be typed besides the usual letters, digits, and punctuation.
Hereafter, the term "display terminal" will be used only for these special
SAIL terminals. Normal commercially manufactured terminals are considered
"non-displays" whether or not they use display screens for output! For use
outside the lab, there is a specially modified version of the Datamedia
model 2500 display terminal which allows the SAIL character set to be typed;
these terminals are considered to be displays also. Non-displays are
sometimes called Teletypes, for historical reasons, although the name is a
trademark and should not be so used. Both "Teletype" and "console" are
sometimes used to mean any terminal, although "console" is more properly
used to refer only to the computer's operating console in the machine room
and its associated terminal.
There are two kinds of display terminals in use at the lab, Data Discs and
IIIs ("triple-I"). They use the same keyboards, but have different display
screens. The Data Discs, which are more numerous (about 60 of them), use TV
monitors. (The name Data Disc actually refers not to the terminals
themselves, but to the machine in the computer room which controls them.)
The six IIIs are vector plotting displays, used mainly for graphics display
programs like Spacewar. Unless you are writing a display program, the
difference is not too important except that the character set on the IIIs is
less legible than that on the Data Discs.
A vacant terminal should say TAKE ME I'M YOURS! along with some cryptic
information. On a III, the cryptic information is the system WHO line,
described on page 19. On a Data Disc, besides the system WHO line, there
will be a status display for all the jobs using the system. If it's
completely blank, make sure it's turned on, and that the brightness and
contrast (intensity on IIIs) are turned up. If it says NO DATA DISC
CHANNELS LEFT, it means that the Data Disc, which can run only 31 terminals
at once, is full. A terminal that is not in use is called an available
terminal. Please remember to log out when you are done using a terminal so
that it will become available.
Each of the printing character keys on our terminals has two characters
printed on it (except the 0 key). The bottom one is usually a letter or
digit, and the top one is some special character. There are two SHIFT keys
and a SHIFT LOCK key, which make letters upper case. The keys which produce
the special characters are labelled TOP. For example, hitting the "<D" key
alone produces lower case "d"; also holding down SHIFT produces capital "D";
and holding down the TOP key makes it produce "<" (SHIFT and TOP together is
interpreted as TOP).
When you type something on an available terminal, the available message is
replaced by whatever you typed. The characters you type are kept in a
special buffer called your line editor until you activate them by typing
RETURN or one of a few other special characters. The line editor allows you
to change the contents of the line by using special editing command
characters. The characters in the line editor are displayed on the screen
with two cursors: underlines on Data Discs and triangles on IIIs. The left
cursor is underneath the first character in the line editor; the right
cursor is under the place where the next character you type will go
(generally the end of the line). When your line editor is empty, the
cursors coincide. The line editor commands are explained in Section 2.2.
Note: when you type RETURN, the monitor generally supplies a LINE character
automatically. RETURN signifies a return to the left margin, and LINE an
advance to the next line.
To get you started using display terminals before you read about all the
line editor commands, all you need to remember is that the BS key will
delete the last character, and the CLEAR key will delete the entire line.
The CONTROL and META keys are used for other line editor functions.
A note on terminology: In the body of this manual, characters are referred
to by the name printed on the keyboard, e.g., RETURN and FORM. In other
documentation, including some of the appendices to this manual, different
notations are used. Some of these are shown here:
function key other notation
break BREAK <BRK> [BRK]
escape ESC <ESC> [ESC] <ESCAPE>
call CALL <CALL> [CALL] ↑C
clear CLEAR [CLEAR] ↑U
tab TAB <TAB> [TAB] <HT>
form feed FORM <FORM> [FORM] <FF>
vertical tab VT <VT>
backspace BS <BS> [BS]
carriage return RETURN [RETURN] <CR> CR
line feed LINE <LF> LF <LINEFEED>
shift SHIFT <SHIFT>
top TOP <TOP>
alt mode ALT <ALT> <ALTMODE> $
meta META <META> β
control CONTROL <CONTROL> <CTRL> α
The combination of RETURN and LINE (remember that LINE is supplied by the
monitor) is sometimes referred to as CRLF.
1.4 Typing Commands to the Monitor
What you type may be read by different programs at different times, so you
should be aware of what program you're talking to. When you first type on a
vacant terminal, you are talking to the monitor's command decoder. You
continue to talk to the monitor until you start running a program; then
you're generally talking to that program. To distinguish these conditions,
the state of the terminal is described as monitor mode or user mode. When
the monitor is ready to read a command from your terminal, it types a
period. Programs usually type some special character(s) to prompt you when
the are ready for a command; many system programs prompt you with an
asterisk.
It is possible to type ahead when the system is not waiting for typein.
Characters you type which are not immediately read by either the monitor or
a program are stored in your terminal's input buffer until they are needed.
Programs can cause this buffer to be cleared. For example, some programs
ask for confirmation of certain commands, e.g., when you specify for output
a filename which already exists. Some such programs clear your input buffer
first and others don't, so you can get confused by typing ahead to a program
whose behavior you don't know. Your input buffer is also cleared when you
type CALL.
Monitor commands consist of the command name, possibly followed by arguments
separated by spaces or punctuation, and then a RETURN. The command may be
typed using upper and lower case letters interchangeably. Monitor command
names may be typed in completely, or they may be abbreviated to only as many
letters as are necessary to make the name unique; for example, the LOAD
command may be abbreviated LOA, but not LO because there is also a LOGIN
command. A few common commands have single-letter abbreviations (L is
accepted to mean LOGIN). Only the first six letters of a command name are
relevant.
Some monitor commands are completely processed by the monitor, without
running a program in your core image. For example, the DAYTIME command
types the current date and time, without disturbing your core image. Most
commands, however, require a program to be run. The monitor usually
requires you to log in before you may run programs; there are a few
exceptions, to permit system information programs like WHO, and of course
the LOGIN program itself. If, when not logged in, you try to run a program
which requires you to be logged in, the monitor automatically runs LOGIN,
which will ask you for your project-programmer name. In this situation,
when LOGIN finishes running, it will re-enter the command which you typed in
the first place, so the command will be performed without making you retype
it. Commands which require login but which refer to a pre-existing core
image rather than running a new program (e.g., START) do not cause this
automatic login, but give an error message.
When you first enter a command which runs a program, the system assigns you
a job number and types a line like
Job 19 SU-AI WAITS 8.72/G Assembled 08/02/78
which tells you what version of the monitor is running and when it was
created, as well as your job number. If it types
Job capacity exceeded
too many jobs are already logged in. When a program like WHO is run without
logging in, the job is killed when the program exits or if the user types
CALL. The LOGIN program, however, leaves you logged in when it exits.
Some of the monitor commands are briefly described starting in Section
1.6. The full descriptions of all the commands are in Sections 4 and 5,
and in the appendices.
1.5 File Storage
A file is a stored collection of information, perhaps a program or data.
Most files are stored on a permanently available disk unit. Files on the
disk must be identified by name and by owner so that you can get at the one
you want. Files on other devices may also be used; we have magnetic tape,
DECtape (a small mag tape unit unique to Digital Equipment Corporation
machines), and paper tape, as well as a line printer and stuff like that.
Whenever a program does input or output, it has to specify the particular
file it wants. A file identifier is typed in the form
DEV:FILNAM.EXT[PRJ,PRG]
some parts of which can be left out. DEV specifies the device you want.
Generally, if you want the disk (DSK), you may leave out the device name.
If you leave out the device name, leave out the colon too. Device names may
include a number to specify a particular unit; thus, TTY is your own
terminal (all terminals used to be Teletypes, and the name stuck), but TTY14
is the one next to the vending machine. Besides these physical device
names, you can define logical device names to use in your program. The
monitor command ASSIGN is used to make your logical name refer to some
particular physical device.
Some devices, like the disk, require the use of filenames, and some, like
the line printer, don't. If you specify a filename for a device which
doesn't use one, the name is ignored. Devices which require file names are
called directory devices because they include special files called
directories which tell where the other files are. Files are specified by a
filename, another name called the extension, and, on the disk, a PPN
specifying the file's owner. Letters in the filename are upper case,
although most programs will accept lower case letters. The filename is one
to six letters or digits, and can say anything you want to identify the
file. The extension, which is optional, is one to three characters.
Although the monitor allows any SIXBIT characters (the ones with octal ASCII
codes between 40 and 137--see Appendix 13) to be used in filenames and
extensions, some programs which read filenames use some punctuation
characters as punctuation characters and won't recognize them in filenames.
It is best to stick to letters and digits. If you find that some program
has written a file called @# $!.X ? in your directory and you are having
trouble dealing with it, you will find that several programs, including the
COPY program for file manipulation, use the notation ↓...↓ for such files,
allowing any SIXBIT characters between the downarrows as part of a filename.
(You must, of course, say ↓FILNAM↓.↓EXT↓ if that's what you want, not
↓FILNAM.EXT↓.) The only directory devices in this system are the disk, UDPs
(User Disk Packs), and DECtapes.
The extension of a file is generally one of a standard set used to indicate
what sort of file it is, like SAI for a SAIL program, REL for a relocatable
binary program as produced by a compiler, or DMP for a dumped core image.
Many programs use these standard extensions as defaults, so you often can
type the file name alone.
Disk files require a project-programmer name, which selects the directory to
use for the file (see page 5). If you do not type in a PPN, you generally
get the one you gave to LOGIN. The disk directory for each PPN is called a
UFD (User File Directory); the files in a given directory are also said to
comprise a disk area, although there is not really a physical area involved.
Files are divided into smaller units, called records. The precise meaning
of a record depends on the particular device you are using, but often a
record is the smallest unit of data which the device will transfer to or
from the computer at a time. For example, files on the disk are divided
into 200-word (octal) records. The disk hardware reads or writes one such
record at a time. On magnetic tape, you can write any size records;
however, when you read the tape, each record must be read all at once. The
monitor provides buffering so that your program can deal with the data a
character or a word at a time. The monitor gets a record and stores it for
you.
The following devices are available on this system.
DSK the public disk
SYS same as DSK, but implies PPN [1,3] (system files)
UDP1,2 user disk pack, a disk unit for private disk packs
MTA0,1 magnetic tape drives
DTA1-4 DECtape drives
LPT line printer
XGP Xerox Graphics Printer
IMP Interface Message Processor for ARPA network connections
DLN0-3 Dialnet ports
PTR paper tape reader
PTP paper tape punch
PLT CALCOMP plotter
SIX PDP-6 computer, used to control music devices:
ADC analog-to-digital converter
DAC digital-to-analog converter
SAM Samson (Systems Concepts) digital synthesizer
FRM Moore digital synthesizer
KIM real-time console interface
RTJ real-time job
ELF PDP-11 computer, used to control robotics devices
TV TV cameras
CAR cart transmitter
TTYn terminals and pseudo-teletypes (see below)
TTY the user's own terminal
CTY PDP-10 console terminal
NUL null device, ignores output, gives end-of-file on input
A pseudo-teletype (PTY) is a simulated terminal-like device used to allow
programs to "type" monitor commands. The program uses special UUOs to
output text to the PTY, which is then seen by the monitor as if it were
typed at another terminal, with its own TTY number. Similarly, text typed
out to the PTY can be read by the controlling program. One user of PTYs is
the program which allows people at other computers to use our system via the
ARPA network (Appendix 8).
Disk files are copied to magnetic tape daily, using the DART program (see
Appendix 5). Monitor commands which run DART can be used to retrieve files
which have been clobbered by system failure (uncommon) or user error.
1.6 LOGIN and KJOB Commands
In this and the following sections, a few of the monitor commands used in
creating and debugging a program are described briefly. More complete
descriptions come later and in other manuals.
The first thing you have to do is log in. The command for this is called
LOGIN, abbreviated L. Your project-programmer name is its argument. (See
page 5 for an explanation of project-programmer names.) Most users use
project name 1 when they log in; to do this you simply give your programmer
name as the argument. If you are named V. I. Lenin, you might type
L VIL
which means the same thing as
L 1/VIL
(The slash means that you don't want to see any system messages which you've
seen before. You could have used a comma to see all messages or a period to
see none at all.) The monitor processes this command by assigning and
typing out a job number, and then starting the LOGIN program in your core
image.
If this is the first time you're logging in, LOGIN will type out
Are you sure?
to which you must type a Y. It will tell you that you are not known as an
authorized user of the system, unless your initials have been added to the
authorized users list. Then you get the messages, and the program exits.
You are now logged in. Section 5.1 explains the LOGIN command more fully.
When you finish doing whatever you want, you should log out. The command
for this is called KJOB, abbreviated K. No arguments are required, just K
and RETURN. (As with all monitor commands, your terminal must be in monitor
mode when the command is given.) This command runs the LOGOUT program,
which types out how much computer time you used, etc., and kills your job.
Your terminal will become available in a few seconds if you don't type
anything else. If there are no files in your directory, the LOGOUT program
deletes the directory. Section 5.2 gives more complete documentation of
the logout procedure.
1.7 Editing Commands
To enter your program, or to correct it, you will use one of our text
editors. There are three editors in common use here:
1. E. This is the one you'll generally use. It is a fast display editor
with many diversified features. It is sometimes called ETV after the
monitor command by which it is invoked.
2. SOS. This editor is designed for use at non-display terminals. Files
created with SOS include a line number at the beginning of every line.
Editing commands use the line numbers to specify what lines to change,
delete, or whatever. Hopefully you will have no need to use this editor,
since you'll be using display terminals.
3. TECO. This editor is the XTEC version of a standard editor supplied by
DEC. It is extremely powerful, in that it allows you to write editing
programs which can process a file systematically, and it is very flexible
about strange characters in the file. However, for routine editing it is
somewhat inconvenient to use because it does not use the display facility of
the terminals.
Each of these editors is described in its own manual. A bibliography is
included as an appendix to this manual. The point to be explained here is
how to use monitor commands to invoke an editor; we'll assume here that
you're using E.
Suppose you want to write a program called PROG in the SAIL programming
language. The monitor command to create a new file with E is CETV. So you
would type
CETV PROG.SAI
(SAI is the standard extension for SAIL programs.) This command tells the
monitor to run E, and tells E to create a new file named PROG.SAI. E
remembers the last editing command you typed, so later you'll be able to
edit the file simply by entering an ETV command without having to type the
file name again. (Note--LOGOUT makes E "forget" your commands, so you have
to type the file name again when you next log in.)
The command for editing an already existing file with E is ETV. You can
enter this command with no argument and it will remember the file from the
last edit command, or you can specify a filename as with the CETV command
above.
The other editors (SOS and TECO) do not read monitor commands themselves.
Instead, the corresponding monitor commands for those editors are
interpreted by the SNAIL program, which then starts the appropriate editor.
Later in this manual the ETV and CETV commands will be referred to as "SNAIL
commands" even though they do not actually run SNAIL, since they carry out
SNAIL-like functions.
There is a file you can edit to learn how to use E. To do this, log in and
enter the following command:
HELP ETEACH
Then just read what appears on your screen and follow instructions. This
command creates a file which you may want to delete when you are done.
1.8 Commands for Compiling and Running Programs
Once you have typed in your program, you have to compile it, load it, and
run it. Compilers like SAIL put out relocatable binary programs. This
means that the program is in a form which contains enough information so
that it can be loaded into any address in core. Addresses within the
program are all considered relative to the program's first word, so the
LOADER has to add the actual address of that word to all the relative
addresses in the program. Your program can be loaded along with others, for
example a debugging program; the actual location of any program in your core
image will depend on what other programs are loaded with it. (Note that
this relocatable binary program format has nothing to do with the hardware
relocation discussed on page 5.) The core image produced by the LOADER can
be saved in a DMP (dump) file, which can then be run directly by a monitor
command without going through the LOADER again.
Suppose you have typed in your program, PROG.SAI. You want to compile,
load, and run it. You could say
EXECUTE PROG
and all those things would happen automatically. SNAIL would generate a
command file for SAIL telling it to compile PROG.SAI and start up the
loader, which also gets a command file. (SNAIL knows that it should use the
SAIL compiler because of the SAI extension in your filename.) Again, SNAIL
remembers the command, so next time you just have to say EXECUTE and it'll
all happen. In fact, the editors all have commands which automatically
re-do the last compile-type SNAIL command.
Suppose, to make this clearer, you find a bug in the program. To fix it,
you can give the monitor command
ETV
and E will start editing PROG.SAI.
Then you use E commands to edit the file. When you're done, you use the
exit-to-SNAIL command, which in E is CONTROL-X GO. This will automatically
repeat the EXECUTE command you typed before.
There are many different versions of this compilation command: COMPILE will
just compile the program, LOAD will compile and load, etc. The SNAIL
commands are listed in Section 5.3 and fully described in Appendix 1.
1.9 Information Commands
You can sometimes find out how to use a system command by typing HELP
followed by the command name. Typing HELP with no argument will list the
kinds of help available this way. For instance, if you forget how to log
in, you can type HELP LOGIN.
More complete program documentation is accessible through the READ command,
which takes a name as its argument, like HELP, and starts the E editor
reading a file with that name in the documentation directories, if any.
This is most useful from a display terminal, since E is a display-oriented
editor.
To get a list of the files in your directory, type the DIRECTORY command.
You can get the list for another disk area by including a PPN in square
brackets as an argument.
You can see the status of all the jobs on the system with the WHO command,
abbreviated W. You can find out about jobs belonging to a particular user
by typing WHERE prg (prg is the programmer name) or FINGER prg. These type
out information about the given user's jobs; try them to find out more. All
of these commands run programs in your core image, so you shouldn't run them
if you need the program you have there. These information commands can be
run without logging in first, except for READ.
1.10 Programs and Core Images
This section discusses the allocation and use of core storage for a job.
The PDP-10 storage is divided into pages of 512 words each. Currently,
pages are always allocated in pairs; thus a job's core image is an even
number of pages in size. A job's core image may be located in any set of
actual core pages while the program is running.
Actually, a job may use two distinct sets of core pages, called the lower
and upper segments. The job must have a lower segment in order to run.
This segment belongs to that job alone. If the job has an upper segment, it
may be shared with other jobs. One use of this is to allow several users to
run the same system program with only one copy of the program in core; the
data for the individual users is stored in each job's lower segment, and the
common code is in the upper segment.
An upper segment may be write protected, so the program in it cannot be
accidentally changed. This is usually done with shared upper segments.
Programs can control the write protection of their upper segment by UUO.
Upper segments are more fully explained in the UUO Manual.
Each upper segment has an entry in the system job table, including a job
number, a segment name, and much of the status information associated with
jobs. Some of the monitor commands described in later sections of this
manual refer to upper segments.
The lowest locations in each lower segment, called the Job Data Area, are
used by the monitor to store information about the job. Some of this
information is of interest only to the monitor, while other parts can be
used and modified by the job itself. In particular, some monitor commands
use information from Job Data Area words, e.g., starting addresses for the
program. The description of such commands will refer to the relevant word
by its symbolic name, of the form JOBxxx, e.g., JOBSA is the word containing
the program's normal starting address. The complete description of the Job
Data Area is contained in the UUO Manual.
2 DISPLAY TERMINALS
A display terminal is one which uses a TV-like screen, rather than a sheet
of paper, as its output medium. However, in this document (and in general
around SAIL), the term "display terminal" will be used to refer specifically
to the special kind of display terminals for which special services are
provided by the WAITS operating system. These include the Data Disc and III
terminals at the laboratory, as well as a specially modified version of the
Datamedia model 2500 terminal which can be used for remote communication
with our system. These Datamedia terminals are discussed in Section 2.10;
for now we consider only the terminals within the laboratory building.
There are two kinds of display terminals in use at the lab, Data Discs and
IIIs ("triple-I"). They use the same keyboards, but have different display
screens. The Data Discs, which are more numerous (about 60 of them), use TV
monitors. (The name Data Disc actually refers not to the terminals
themselves, but to the machine in the computer room which controls them.)
The six IIIs are vector plotting displays, used mainly for graphics display
programs like Spacewar.
2.1 DD and III Keyboards
Our display terminals use a character set called Stanford ASCII. ASCII is a
standard computer character set; our version is similar to the standard but
somewhat extended. In particular, the "control" codes in ASCII, which mean
things like "end of text," are used here for printing characters like α and
∃ and ∩. There are seven bits in a character code; since the PDP-10 has
36-bit words, five characters fit in a word with one bit left over. The
complete Stanford ASCII character set is listed in Appendix 13.
Each of the printing character keys on our terminals has two characters
printed on it (except the 0 key). The bottom one is usually a letter or
digit, and the top one is some special character. There are two SHIFT keys
and a SHIFT LOCK key, which make letters upper case. The keys which produce
the special characters are labelled TOP. For example, hitting the "<D" key
alone produces lower case "d"; also holding down SHIFT produces capital "D";
and holding down the TOP key with it produces "<" (SHIFT and TOP together is
interpreted as TOP).
There are several special character codes, generally not printing
characters, which are not affected by SHIFT and TOP. One is the space bar,
which spaces as on any typewriter. The TAB key sends a tab code, which
prints by spacing out to the next tab stop; these are set eight spaces apart
and cannot be changed. The RETURN key sends a carriage return code, and the
monitor generally provides a line feed code after it automatically. The
LINE key sends a line feed alone; this is not too often useful. The FORM
key sends a form feed code, and the VT key a vertical tab. These two are
used by some programs as control codes, but not often for their printing
effect. The BS key is backspace (in real ASCII this code is called delete).
This code is usually not sent to your program, but is taken by the line
editor as a command to back up the cursor. The ALT key sends an alt mode;
this code has no printing significance, but is used as a control code by
programs.
Although ASCII is a seven-bit code, display terminals actually send nine-bit
codes to programs. The two extra bits represent the CONTROL and META keys.
These keys are like SHIFT and TOP in that they are held down along with some
other key. The CONTROL and META bits are sometimes called "bucky bits", and
the two combined are called "double bucky". The bits have two different
functions. When the character they are used with is sent to a program, it
can be used as a control command. Editing and debugging programs use such
single-character commands heavily. For example, in the E editor,
CONTROL-META-D means to delete a line. However, the CONTROL and META keys
are also used as commands to the system line editor for inserting characters
inside a line, etc. The use of the line editor is explained in Section
2.2.
There are four more keys to be described. They are unusual in that none of
them send characters to your program or to the monitor's command decoder;
they are processed by the monitor's keyboard scanner and the line editor.
CLEAR is simply a line editor command to delete the entire line in the line
editor. CALL is used to interrupt a program running in your core image and
return your terminal to monitor mode. ESC (escape) and BREAK are used to
signal that the characters which follow are a special command to the display
service routines in the monitor; the many different functions of these
commands will be explained in Section 2.4 and following sections. There
should be a list of the ESC and BREAK commands attached to your keyboard; if
not, see page 18 to find out how to print one.
Please note that the ESC and BREAK keys generate codes by themselves; they
are not shift-like keys as CONTROL and META are. Thus, for example,
CONTROL-A means "press the A key while holding down CONTROL," whereas ESC A
means "press ESC and then press A." Also, the ASCII character which is
represented on our keyboards as ALT is sometimes called "escape" (the name
was changed a few years ago; another name for the same function is "prefix")
and is produced by a key marked ESC on some other computer terminals, but
our ESC is not one of the ASCII codes and should not be typed when ALT is
wanted.
2.2 The Line Editor
At a display, the characters you type are accumulated by a part of the
monitor called the line editor. When you end a line by typing an activation
character, the entire line is sent to your program (or to the monitor
command decoder). Generally you will activate a line with the RETURN key,
although others also work. The exact workings of activation are discussed
in Section 2.3, but first, there are several editing command characters
which can be used to change the text in the line editor.
There are two line editor cursors displayed on your screen. The left cursor
is underneath the first character in the line editor and is called the line
cursor. The right cursor is under the character position you are about to
write into and is called the character cursor. The cursors are underlines
on Data Discs, and triangles on IIIs. Also, on IIIs, the characters in the
line editor are displayed somewhat below any other characters on the same
line. If there is no text in the line editor, the two cursors coincide.
On Data Disc terminals, when there is no text in the line editor, you will
sometimes see a "broken" cursor consisting of two very short lines. This
means that the program you are running is waiting for a single character to
be typed, rather than an entire line. The reason for this display is that
many programs ask you yes-or-no questions, and some of them expect you to
type, e.g., Y followed by RETURN while others just wait for the Y. The
broken cursor warns you that a RETURN is not expected. However, it is
possible for programs to wait for a single character in sneaky ways which do
not cause a broken cursor, so the warning is not perfectly reliable.
When you type a normal character into the line editor, it is displayed at
the character-cursor position, replacing any other character which was there
before. The CONTROL and META keys are used to change the function of
characters typed in. Also, several characters have different functions
depending on whether or not they are typed with the character cursor at the
end of the line. For example, BS at the end of the line deletes the last
character; inside the line, it moves the cursor left one position without
deleting anything.
As explained below, some characters with CONTROL or META bits are normally
interpreted as line editor commands. These commands may only be meaningful
under certain conditions; for example, a command to space forward into the
line is not meaningful if the cursor is already at the end of the line.
CONTROL or META characters which are not meaningful line editor commands can
be used as commands to user programs (in which case they are activation
characters); they can be treated as if they had been typed without the
CONTROL or META bit; or they can be ignored altogether. The choice is made
by the user program, which can also disable some or all line editor
commands. This flexibility makes it a bit complicated to describe exactly
what happens in each case (we make an attempt in the next section), but in
general programs are written so that the "right" thing happens. Roughly, in
monitor mode, control characters which are not line editor commands are
treated as if typed with META, i.e., inserted into the line; when typing to
a user program, they generally activate. For the rest of this section, we
ignore the question of CONTROL or META characters which are not taken as
line editor commands, and simply deal with the ones which are.
META along with a printing character (including space and tab) inserts that
character at the cursor position, in front of the character already there,
rather than replacing the old character. META characters are considered
meaningful line editor commands only when not at the end of the line.
BS at the end of the line deletes the last character. If it's not at the
end, BS just backs up the cursor without deleting. People talk about
deleting backspace and non-deleting backspace to distinguish these.
CONTROL-BS is always non-deleting, and META-BS is always deleting.
CONTROL-SPACE is the opposite of CONTROL-BS: it moves the cursor forward
without changing the text. SPACE alone and META-SPACE act like any printing
character. At the end of the line, CONTROL-SPACE usually does nothing (it
neither moves the cursor nor activates).
CONTROL-META-SPACE and CONTROL-META-BS are unlike all other characters typed
in this system in that they are "repeating" commands: they move the cursor
forward and backward, like CONTROL-SPACE and CONTROL-BS, but continue moving
the cursor as long as you hold down the keys. No other CONTROL-META
characters are line editor commands.
CONTROL-TAB moves the cursor to the end of the line, as if you typed
CONTROL-SPACE many times. (Inside the line only.)
CONTROL-FORM is the opposite: it moves the cursor to the beginning of the
line, so the two cursors coincide. (Inside or end of the line is ok for
this one.)
CONTROL-D deletes the character above the character cursor. (Inside only.)
Note that this is different from META-BS, which deletes the character to the
left of the cursor.
CONTROL-S skips ahead from the current position of the character cursor to
the next occurrence of the character you type next. If the next character
you type does not occur to the right of the cursor, nothing happens. If the
search character is a letter, the case must match. If the character you
type next is RETURN, the cursor moves to the end of the line. (Inside
only.)
CONTROL-K is like CONTROL-S but instead of moving the cursor it kills
characters up to (not including) the one you select. Again, nothing happens
if the character does not occur. If the character you type after CONTROL-K
is RETURN, all the characters from the cursor to the end of the line are
deleted. (Inside only.)
CONTROL-B searches for the character you type next, like CONTROL-S, but
searches backwards (toward the beginning of the line). It is normally
accepted as meaningful anywhere except on an empty line.
CONTROL-L kills backwards, like CONTROL-K, but toward the beginning of the
line. Meaningful except on an empty line.
CONTROL-R repeats the last search or kill command given. It does not wait
for you to type another character, since it remembers the argument from the
previous search or kill command. This works even if the line editor has
been activated since the last search or kill. This is a meaningful command
except on an empty line.
CONTROL-I enters insert mode. In this mode, all characters are treated as
if you were holding down the META key, until you leave insert mode by typing
another CONTROL command or META-character. That is, after CONTROL-I, normal
characters typed are inserted instead of overwriting old ones, and BS is a
deleting backspace. (Inside only.)
CONTROL-number (that is, any decimal number typed while holding down the
CONTROL key) will cause a CONTROL command immediately following to be
repeated that many times. For example, CONTROL-5 CONTROL-BS will move the
cursor left five positions. This can be used to repeat the BS command as
well as CONTROL-BS, META-BS, CONTROL-SPACE, CONTROL-D, CONTROL-S (finds the
nth occurrence), CONTROL-K, CONTROL-B, CONTROL-L, and CONTROL-R.
CLEAR will delete everything in the line editor.
CONTROL-RETURN will retrieve the last line which was edited, as long as you
haven't typed anything since then. That is, after you activate or CLEAR a
line, if the very next character you type is CONTROL-RETURN, the line is
returned to the line editor. You can send the same line again by just
typing RETURN, or you can edit it. This is very handy when a monitor
command, for example, fails because of a spelling error; you can simply say
CONTROL-RETURN, correct the error, and say RETURN to activate the corrected
command. Typing CALL or an ESCAPE or BREAK command (see Section 2.4) will
not prevent a later CONTROL-RETURN, but any character which is entered into
the line editor will make it forget the previous line.
CONTROL-T transposes the two characters to the left of the cursor. This is
often convenient for bad typists. It is normally considered meaningful
except on an empty line, although it has no effect if there are not at least
two characters to the left of the cursor.
The TAB character is treated in a special way by the line editor. Commands
like CONTROL-SPACE treat a TAB as a single character, so a CONTROL-SPACE
when the cursor points to a TAB will move several spaces to the right.
Typing a character without control bits, however, only replaces the first
space of the TAB. There will still be a TAB in the buffer, unless the TAB
was positioned so that it was only equivalent to one space, in which case it
goes away completely when another character is typed over it.
2.3 Line Editor Activation
This section is about the workings of line editor activation: how the line
editor decides to release characters to your terminal input buffer.
Normally, the characters you type are accumulated in the line editor buffer
until you type an activation character, which tells the monitor to send the
line you have typed into your input buffer. The standard activation
characters are just RETURN, LINE, and ALT. (Note: a RETURN typed by the
user is automatically translated into a RETURN plus a LINE, and it is the
LINE which is the real activation character.) User programs can specify
additional activation characters by using the SETACT UUO.
Those CONTROL or META characters which are not meaningful line editor
commands may be activation characters, at the option of the user program.
Alternatively, they may be treated as ordinary characters to be inserted as
if typed with META but without CONTROL. There are two main categories to
consider, those control characters which are line editor commands but not
meaningful as such in the present context, and those which are never line
editor commands.
In monitor mode (while typing monitor commands), the rules are always the
same: all line editor commands are enabled; a line editor command which is
not meaningful in the present context (e.g., at the end of a line) has no
effect (note that, e.g., CONTROL-S will "absorb" the following character
even in this case); control characters which are not line editor commands
are treated as if typed with META, i.e., they are inserted into the line.
The processing chosen by user programs will depend on whether or not they
use control characters as commands. The default processing is to consider
all control characters as activators unless they are line editor commands.
All possible line editor commands are considered meaningful (i.e., don't
activate) except at the end of the line, where CONTROL-D, CONTROL-I,
CONTROL-S, CONTROL-K, CONTROL-TAB, and META-anything activate. If the line
is empty, CONTROL-B, CONTROL-L CONTROL-T, and CONTROL-R also activate. (The
phrase "control characters" include those with the META bit as well as those
with the CONTROL bit.) The program may, however, suppress activation of some
or all control characters, or suppress the effect of some or all line editor
commands. User program documentation should indicate which control
characters, if any, are used specially by that program. The SETACT UUO is
used to control the processing of these characters. If the user program
enables 7-bit characters other than RETURN, LINE, and ALT as line
activators, then your terminal is said to be in special activation mode.
Otherwise it is in normal activation mode. The program can also disable the
CONTROL-RETURN function. Also, programs can choose to activate on any
character at all.
The RETURN character is treated specially by the line editor: the cursor is
moved to the end of the line before the RETURN is inserted. Therefore
typing RETURN always activates the entire contents of the line editor.
(Note: this is true only of a RETURN typed without control bits; also, a
RETURN typed while in insert mode is treated like a META-RETURN and
therefore is not moved to the end of the line.) This special handling of
RETURN, the most common activator, makes it convenient to modify something
inside the line and then activate it without worrying about getting to the
end of the line first.
When you type an activation character other than a bare RETURN, the
characters up to and including the activator are available for input to the
user program or the monitor command scanner. Any characters following the
activator remain in the line editor. (This behavior is also subject to user
program control via the SETACT UUO.) The activator is inserted in the line;
it does not overwrite the character which was at the cursor position before
typing it.
If the activation character is a RETURN with control bits, what the program
sees is not a RETURN with control bits, but a bare RETURN followed by a LINE
with the corresponding bits. (The system always adds a LINE when you type
RETURN; what is special about this case is that the control bits are moved
to the LINE.) In particular, the code 612 (CONTROL-META-LINE) should not be
interpreted by programs as an end-of-file code if it is preceded by a 015
(RETURN).
When you re-edit with CONTROL-RETURN a line which was activated by a
character other than RETURN or LINE (either an ALT or a special activation
character established by the user program), the original activation
character appears in the line (with its control bits removed), and if the
line is then activated by typing RETURN, the RETURN is not actually inserted
in the buffer; the original activation character is re-used. Any control
bits on the RETURN are put on the re-used original activation character.
2.4 ESCAPE and BREAK Commands
Certain special characters are used to control the status of your display
terminal. These are processed directly by the monitor's keyboard scanner,
whether or not you are in monitor mode. One example, mentioned above, is
CALL. This key stops your program, if one is running, and returns you to
monitor mode. You can also type CONTROL-CALL or META-CALL for a deferred
call--the program is stopped when it tries to read the CALL character from
your input buffer. Thus you can type some commands into a program, followed
by a deferred call; when the program is finished with your commands and asks
for more, it will be stopped.
There are several commands using the ESC and BREAK keys. Generally, the
format is ESC or BREAK, then possibly a numeric argument, then a letter or
punctuation character which specifies the command. The characters making up
the command are not echoed and are not entered into the line editor; typing
BS while entering an escape command aborts the entire command. A BREAK
command is equivalent to an ESC command with a negative argument, e.g.,
BREAK 3 W is the same as ESC - 3 W. There should be a concise summary of
these commands attached to your keyboard; if not, log in and type this:
HELP DDKEY
(or IIIKEY instead of DDKEY if you are using a III terminal) to print the
list on the XGP.
In the descriptions which follow, upper case letters and punctuation
characters represent keys to be typed, e.g., ESC is the ESC key, and
characters like [ and * are to be typed as indicated. Spaces in the manual
separate the keys to be typed, and do not represent actual spaces to be
typed, which would be indicated as SPACE. Thus, E S C represents three
keystrokes. Lower case letters represent parameters to the commands, so
ESC n W means to type the ESC key, then a number (one or more digits), and
then the W key. Letters may be typed in upper or lower case. Parameters
are almost always numbers before the command letter, as in the last example,
but a few commands allow a programmer name as a parameter, using the syntax
ESC [ prg CONTROL-letter where the final letter with CONTROL key indicates
the command name.
ESC O will stop typeout from your program. Any characters already in your
output buffer are deleted, and any attempted typeout from your program is
ignored. The program continues running, however. Typeout is resumed if you
type BREAK O, or if your program tries to read any characters from your
terminal.
It is possible to suspend typeout from your program temporarily without
losing output, as with ESC O. Typing CONTROL-BREAK starts this holding.
The word HOLDING appears at the top of your screen, and the program is
stopped if it tries to type more characters than fit in your output buffer.
Holding is released by typing any line editor activation character, or
CONTROL-CLEAR.
Display terminals are normally in full character set mode, which means you
can type in upper and lower case letters. You can leave this mode by typing
BREAK F, which has the same effect as pushing the SHIFT LOCK key and also
making output appear in upper case. You type ESC F to return to full
character set mode. The only use for this that I know of is that you can
convert a line of text in a file to upper case in E by typing BREAK F, then
something like CONTROL-SPACE to load the line into the line editor, then
RETURN, then ESC F. Try it.
The system includes facilities which allow users to see what other users are
doing by "spying" on other terminals. The ESC H command will hide your
terminal, notifying other users that you do not want to be observed. Please
note that it is still possible, although considered rude, to override this
protection. BREAK H "unhides" your terminal.
There is a FILES command which can be typed when in monitor mode, to list
the files in use by your job. So that this information can be seen without
having to stop your user program, typing ESC V will type out this file
information. ESC n V will type out the files in use by job number n, and
BREAK n V will type out the same information for the job controlled by
terminal number n. See page 38 for details on what is typed by the FILES
command.
Some programs which read data from your terminal expect an "end of file"
indication after the data. The thing to type to supply this signal is
CONTROL-META-LINE.
Sometimes you may want to write a program which you can interrupt with a
signal from your keyboard, without having to keep checking for terminal
input in the program. For example, if you run a program which searches a
large data base by command, you may want to be able to abort a search
without stopping the program. Typing ESC I or BREAK I will generate an
interrupt condition which your program may enable; the use of program
interrupts is described in the UUO Manual. You may type a numeric argument
with ESC I or BREAK I; the user program is given the number you type and is
told whether you used ESC or BREAK.
If you want to repeat the same escape command several times, but possibly
with a different numeric argument, the command ESC + will repeat the last
escape command which you gave with a numeric argument, but add one to the
argument. BREAK + will do the same thing but subtract one. (Note that
there cannot be an ESC - command for this latter function because ESC - is
equivalent to BREAK.) With the ESC + and BREAK + commands, what is
incremented or decremented is actually the absolute value of the argument;
for example, BREAK 3 V followed by ESC + does the equivalent of BREAK 4 V.
The command ESC * will repeat the last escape command which had a numeric
argument, without changing the numeric argument. BREAK * will repeat the
command but replacing ESC by BREAK or vice versa. Note that none of ESC *,
ESC +, etc. will repeat an escape command which was given without a numeric
argument.
2.5 The WHO Line
The next set of commands have to do with the WHO line, a display of system
status and the status of a particular job on the top two lines of your
screen. Once you start a WHO line display, it is automatically updated
until you turn it off explicitly. To start a WHO line for the job at your
terminal, type ESC W. You can see the WHO line for another job, job number
n, by typing ESC n W. Typing BREAK n W will display the WHO line for the
job using terminal number n. To turn off your WHO line display, type BREAK
W. (Note: this does not actually make the WHO line disappear on Data Discs,
where anything you display stays on the screen until it is explicitly
erased.) Typing ESC W causes your WHO line to be updated immediately, even
if it was already being displayed. The command ESC 0 W causes whatever WHO
line you are watching to be updated immediately.
One use of the WHO line is to keep track of the progress of a job of yours
other than the one at the terminal you're using. To facilitate this, typing
ESC Q will display the WHO line of the next job in the monitor's job table
with your programmer name (or with the same name as the job whose WHO line
you are already displaying, if any). Typing ESC Q repeatedly will cycle
through all such jobs. BREAK Q does the same thing, except that it searches
the job table backwards. ESC or BREAK Q simulates the typing of ESC n W,
where n is the job number it finds, so that you can use ESC * to force
updating of the display.
A final form of the escape command to display a WHO line is provided to find
the WHO line for a particular user if you do not know his or her job number:
ESC [ prg CONTROL-W where "prg" is the user's programmer name (not project
name) and the square bracket is used to indicate that this form of argument
will be used. This command will display the WHO line for the lowest
numbered job logged in with the specified programmer name; if the user has
more than one job, ESC Q can be used to find the others.
This is the format of the WHO line:
LOAD DM III DD JBS,TCOR R,RCOR UCOR NL% DSKQ DSKF DATE DAY TIME TEMPF TEMPC
JOB PPN TTY#! QUEUE JOBNAM SIZE RUNTIME-RP XTIME-XP DSK SEG (ALIAS)
The first line is the system WHO line:
LOAD avg number of jobs in TQ or RUNQ over last 68 secs.
DM number of high-speed phone lines in use (for Datamedias)
III number of III terminals in use (maximum=6)
DD number of Data Disc channels in use (maximum=31)
JBS number of jobs logged in
TCOR total core of all jobs (including those swapped out) in
512-word pages
R number of jobs actually run in the last few seconds
RCOR total core of the jobs counted in R
UCOR amount of core available for running user jobs
NL system null-time percentage over the last few seconds
DSKQ number of jobs waiting to use the disk
DSKF number of free tracks on the disk
DATE today
DAY day of the week
TIME time of day (24-hr clock)
TEMPF outside temperature in Farenheit
TEMPC outside temperature in Celsius
The second line refers to a particular job:
JOB the job number of the job being displayed
PPN its logged-in project-programmer name
TTY its terminal number (in octal) or DET for detached jobs
# "#" is displayed if the WHO line is not for this TTY's job
! "!" is displayed for this TTY's job, if the TTY is hidden (see
page 18).
QUEUE the system queue that the job is in (see below)
JOBNAM the program being run
SIZE size of the job's core image
RUNTIME total run time since login, in minutes and seconds
RP RUNTIME expressed as a percentage of the job's total wait time
(time the job was runnable but not running)
XTIME incremental runtime, normally reset on terminal input but see
below
XP XTIME as a percentage of incremental wait time
DSKOPS number of incremental disk operations (reset along with XTIME)
SEGNAM name of upper segment, if any
ALIAS disk PPN (see below), if any
Some of these need more explanation. The QUEUE is an indication of the
immediate status of the job--is it runnable, waiting for input, stopped,
etc. These are the possible queue names:
RUNQ The job is runnable and not waiting for I/O, etc.
TQ This is a high-priority run queue which jobs are in for a short
time after leaving certain kinds of I/O wait.
STOP The job is stopped because it exited, the user typed CALL, or
there was an error in running the job.
NULQ The job has no core image.
IOWQ The job is waiting for some input/output operation, or for the
completion of a SLEEP or JOBRD UUO. In the case input or
output, you may see instead of IOWQ the name of the device
being used and the direction of the transfer, e.g., TTYO for
terminal output, MTAI for MTA input. (For devices IMP and DLN,
the fourth letter is always W for Wait regardless of the
direction of transfer.) Also, if the job is waiting for
terminal input, you may see these special pseudo-queue names:
LINE The terminal is waiting for an entire line of input.
CHAR The terminal is waiting for a single character of input.
SNK The program has done a SNEAKW UUO and will read the next
single character of terminal input without removing it
from the input buffer.
DIOW The job is waiting for some I/O operation and will not be
swapped out before it is completed.
INTW The job has suspended itself waiting for an interrupt.
DWQ The job is waiting for a device (e.g., line printer) to be
free.
MTQ The job is waiting for the magnetic tape controller.
DTQ The job is waiting for the DECtape controller.
DCQ The job is waiting for the data controller (used for mag and
DEC tapes).
CMQ The job is not in core and needs to be brought in quickly.
Some special characters may be displayed after the queue name:
- The job is currently running.
* The job is swapped out. A second * means the upper segment is
swapped out.
⊗ The job has been locked in core by the LOCK UUO.
\ The job is running a spacewar module on the KL-10.
/ The job is running a spacewar module on the KA-10.
X The job is running spacewar modules on both processors.
Some of the above may not be clear until you read the UUO Manual. The alias
is a PPN used as the default directory for disk files instead of your
logged-in PPN. There is an ALIAS monitor command to set the alias for your
job.
XTIME is an incremental run time, measured in minutes, seconds, and 60ths of
a second (a 60th of a second is called a tick). It is normally reset
whenever the program is started by a monitor command other than CONTINUE,
and also whenever the job is awakened by input from the terminal after
having been in IOWQ waiting for such input. Note that if you type ahead, so
that the job never enters IOWQ, terminal input will not reset XTIME. It is
possible to inhibit resetting of XTIME with the BREAK X command (see below).
If resetting is inhibited, the character separating seconds from ticks in
the display will be " instead of ' as it usually is.
BREAK X inhibits resetting your job's XTIME. ESC X resumes the automatic
resetting as described above. Neither of these changes the current value of
your XTIME. Typing ESC 1 X will set your XTIME to zero; BREAK 1 X will set
it equal to your RTIME (total run time). Both ESC 1 X and BREAK 1 X inhibit
automatic resetting, so you have to type ESC X if you want to restore this.
When a job has not run for several minutes, the ticks part of the XTIME
field, the XP field, and the DSKOPS field in its WHO line display are
replaced with the words "Idle n mins" to indicate that the user may have
left even though still logged in. When the job's WHO line is displayed in
response to an explicit ESC W or equivalent command, however, the full XTIME
and DSKOPS are displayed once even if the job is idle.
User programs may add a third line to their WHO line display: a display of
the status of a particular file in use by the job. What is displayed is the
file name, extension, PPN, file length in records, USET pointer, and flags
(R for read, W for write, RA for read-alter, U for UDP, E for end of file);
this is the same information typed by the FILES command, page 38. This
information is displayed to the right of the HOLDING message area on the
third line of the screen. This display is started by the SHOWIT UUO, or by
ESC 2 X (see below).
The command ESC 2 X will start a file-status display of the first file in
the system's list of files in use by the job whose WHO line you are
displaying, if it has no file-status display already, or the next file if it
does. The command can therefore be repeated as necessary to find a
particular file. The command BREAK 2 X will erase the file-status display.
Since the file-status display is associated with the job, rather than just
with the WHO line display on your own terminal, these commands are accepted
only if the job's programmer name is the same as yours, or if it is a
detached job.
2.6 Page Printer Control
There are two ways of printing on display terminals. To exploit the full
capabilities of the display for graphics, display programs can explicitly
control the positioning of points, vectors, or characters. On III
terminals, 16 such display programs can be written independently, and any
combination of them activated or displayed at any time under program
control. These display programs are called pieces of glass. On Data Disc
and Datamedia terminals, a display program runs only once, and is displayed
until erased explicitly. There are no pieces of glass as on IIIs. On a
Data Disc, the effect of multiple pieces of glass can be gotten in a
different way by displaying more than one channel on the screen (see Section
2.7, which describes the video switch).
The other way of printing on a display terminal is simply to output text to
be printed in order as if on a piece of paper. The monitor automatically
"scrolls" such output; when the area of the screen being used fills up, the
text is moved up a few lines, with the top part disappearing. Sixteen of
these pieces of paper can be displayed at once, on different parts of the
screen. At any time, one of these pieces of paper must be selected by the
program as the one to receive page printer output. The dimensions of each
piece of paper are controlled by the program, but the currently selected one
can also be controlled from the terminal with ESC commands.
The dimensions of the page printer include several factors. First, the
vertical position of the top line of the page. This can be set by the
command ESC n Y for line n. (Lines 1 and 2 are where the WHO line goes; the
normal position is line 4.) ESC Y resets the vertical position to normal.
The scrolling function is controlled by two parameters: the number of lines
typed before a glitch (the upward repositioning of the text), and the number
of glitches on the page. These are set by ESC n L for lines/glitch and ESC
n G for glitches/page. The defaults are 4 glitches of 9 lines for Data Disc
terminals, 12 glitches of 2 lines for III terminals, and 7 glitches of 3
lines for Datamedias. ESC L and ESC G with no argument restore the
respective counts to normal. (Note: there are BREAK L and BREAK G commands,
having to do with the video switch; those commands are entirely unrelated to
ESC L and ESC G.)
It is possible to cause automatic holding, as with CONTROL-BREAK, every n
lines or every n glitches. The commands for this are ESC n E for every n
lines, and ESC n J for every n glitches. At each pause, the word HOLDING
will appear on the third line of the display. CONTROL-CLEAR will resume
output as usual. ESC E and ESC J disable the respective automatic pauses.
Typing ESC N will normalize your page printer geometry. BREAK N will clear
your screen, select piece of paper 0, normalize the page printer, and
display the text in the page at the normal position. To refresh the current
page printer display without changing the page printer geometry, type ESC P.
BREAK P will clear the screen and then do ESC P. These are useful for
getting rid of any noise which may appear on your screen. There is a
rarely-used ESC R to refresh just the display of your line editor buffer.
The command ESC FORM will erase the currently selected piece of paper.
Then, if the terminal is in monitor mode (waiting for a monitor command), it
will type a dot.
Note: Any RESET of your job, either by the RESET UUO or automatically by the
system, eliminates all but piece of paper 0, selects that piece of paper for
further output, and normalizes the page printer display. The UUO Manual
explains the RESET function.
2.7 Data Disc Control
Some ESC and BREAK commands are specific to one of the three kinds of
display terminal. This section is about the Data Disc ones.
The usual display on a Data Disc screen is green letters (hereafter called
"white") on a black background. It is also possible to display black on
white, by typing BREAK C. To restore the normal white on black, type ESC C.
Both of these clear the screen, so you have to type ESC P to refresh your
page printer display. Black on white display requires increasing the
contrast and brightness controls to be visible. This is not the world's
most useful feature; it is also possible, under program control, to display
only part of the screen in black on white.
Virtual Terminals
The remaining Data Disc escape commands control the connection between your
physical terminal and some virtual terminal defined by the system software.
For all types of terminal other than Data Disc terminals (dialup, hardcopy,
III, or pseudo-TTY), each physical terminal corresponds to a unique software
TTY number. For example, the Teletype in the Prancing Pony is always
associated with the software terminal line called TTY14. This unique
correspondence does not exist for Data Disc terminals. Since there are 58
physical Data Disc terminals, and only 31 video channels available for
users, not all of the physical terminals can be used at once; when a user
first types on a vacant Data Disc keyboard, the monitor assigns a virtual
terminal line number and associates that number with the physical terminal.
For example, the Data Disc terminal located near the PDP-10 console is
TV-66, but it may or may not be associated with virtual TTY66.
Actually, there are two different correspondences to consider: what appears
on a particular physical screen may not correspond to the virtual terminal
controlled by the associated keyboard. That is, you may be seeing one thing
on your screen while typing at something different. There are escape
commands both to determine keyboard mapping (that is, which virtual line is
being controlled by your keyboard) and to control the video switch. The
video switch allows you to select, from among the 32 Data Disc channels,
plus various TV cameras and video synthesizers, what you want to see on your
screen. You can see more than one Data Disc channel at a time, but only one
of the analog channels (the cameras). You can select an analog channel
along with a Data Disc channel only if the two are synchronized; e.g., the
lounge TV signal can't be combined with a Data Disc channel because the
synchronization of the former is not under our control.
In the following discussion, the word "keyboard" refers to a physical Data
Disc terminal keyboard, "screen" to a physical screen, "line" or "terminal
line" to a virtual terminal, and "channel" to one of the video images
generated by the Data Disc controller. A number like TV-102 refers to a
keyboard and screen, TTY66 to a terminal line, and DD2 to a Data Disc
channel. Note: all of these numbers are octal; there is no TTY68!
When a virtual terminal line is created (by typing at an available
keyboard), it is given a Data Disc channel. This is the terminal's "main
channel". The job running on that line may choose to select other channels
for viewing in addition to (or instead of) its main channel. For example, a
program which does video synthesis may choose to display the video
synthesizer output on its controlling terminal line. The channels selected
for a particular line constitute the line's "video map". Actually, each
line has both a temporary and a permanent map; a program RESET cancels any
changes to the temporary map and reverts to the permanent map. (The
permanent map does not necessarily select the line's main channel, although
that is the most common case; both temporary and permanent maps are
controlled by the program.) A screen which is watching the video map of a
particular line is said to be "tied" to that line. Normally, when a
keyboard is mapped to a line, the associated screen is tied to the same
line.
Just as a terminal line can be hidden to discourage spying (see page 18),
Data Disc channels in use by a job may be public or private. Only public
channels may be selected by other users. The main channel used by a
terminal is normally public. The command ESC H hides (makes private) your
terminal's main channel; BREAK H makes it public.
Keyboard Mapping
Although a keyboard can only be mapped to one line at a time, you may be
using several lines from the same physical terminal and mapping back and
forth. (Note: during the day, when there is a shortage of Data Disc
channels, this use of more than one line is strongly discouraged!)
Therefore, at any given moment a particular line may not have any keyboard
mapped to it. However, the monitor remembers which keyboard is responsible
for the line. This is normally the keyboard which most recently typed a
character into the line. (In other words, if you map to a line and map away
again without typing anything into it, you do not become responsible for
it.) It is also possible to claim or disclaim responsibility for a line
explicitly. The concept of responsibility is important for two main
reasons: audio beeps directed to a line (see Section 2.9) are heard at the
responsible physical terminal, even if its keyboard is mapped elsewhere at
the time; and the keyboard responsible for a line can map to it even if it
is hidden. When a keyboard becomes responsible for a line for which some
other keyboard was previously responsible, the system also remembers the
previous responsible keyboard, so that if the new responsible keyboard
disowns the line, responsibility for it is returned to the previously
responsible keyboard. However, only one previously responsible keyboard is
remembered.
A keyboard may be responsible for more than one line, but there is always
one line which is the home line for that keyboard. This is normally the
first line into which a previously unused keyboard types, but can be changed
by explicit escape commands.
All of the keyboard mapping commands in this section also tie your screen to
the same line. Therefore, you will normally see what you are typing at,
unless you give a special video switch command to control the screen
separately.
The command to map your keyboard to a terminal line is ESC n M, where n is
the line number. The line must be vacant, your own (i.e., you must be
responsible for it), or public (see BREAK H above) for this command to have
any effect. Typing ESC M will map you back to your home line. Since you
may not know the line number if you want to map to a particular user's
terminal, there is an alternate form of the mapping command in which you
specify the programmer name of some user, and the system finds some terminal
line on which that user is logged in. The form of this command is
ESC [ prg CONTROL-M or alternatively ESC [ prg ] (the closing bracket
implies the M command).
The command BREAK M maps your keyboard to the line of another job with the
same programmer name as the one to which you are currently mapped, if there
is another such job on a Data Disc line. The line must be be set public, or
your keyboard must be responsible for it, as for ESC n M.
The command BREAK R maps your keyboard to another line for which it is
responsible, if any. Repeated BREAK R commands will cycle through all such
lines. (Note: there is an ESC R command which is unrelated to this one.)
The command ESC n M, when n is an unused line number, will map your keyboard
to an available line, but when you initialize the line by typing into it,
you may not be assigned to the specific number you gave in the command. Of
course, if you want an unused line, it doesn't matter what line number you
get, and you may not know the number of an available line anyway.
Therefore, you can ask for an unused line with the command ESC CALL which
maps you to an unused line, types a CALL into the line, and makes you
responsible for it. If there are no available lines (i.e., no free Data
Disc channels), your keyboard number will be entered into a queue of people
waiting for channels, and you will be mapped to an "available" line into
which you can't type anything. You can then, of course, type ESC M to
return to your other line, if you have one, while you're waiting. When you
are placed in the queue, you will hear a beep to notify you. If you don't
get the beep, it means that the queue was too full. (This is very rare.)
The first several entries in the queue are displayed on the available
channel (the one seen by unused terminals). Each keyboard can only be in
the queue once, even if you type ESC CALL again. You can leave the queue by
typing BREAK CALL, which will beep you if and only if you were actually in
the queue. If you are in the queue, when your turn comes and a channel
becomes available, you are beeped again. You are made responsible for the
channel, so you can map to it with the BREAK R command. The beeps
associated with entering and leaving the Data Disc queue are not disabled by
the ESC B command, which prevents other kinds of beeping.
Please note that these keyboard mapping commands apply to your physical
terminal. Most escape commands, like ordinary characters or line editor
commands, apply to a virtual terminal line; for example, a command like
ESC W affects the line to which you are mapped, and claims responsibility
for the line as a side effect. The mapping commands, however, do not affect
any line, and do not make you responsible for the line to which you are
mapped. The video switch commands and audio switch commands, to be
described shortly, also apply to your physical terminal.
The command ESC CLEAR is used to set your home terminal line explicitly to
the one to which you are currently mapped. This home terminal line is the
one to which the ESC M command maps your keyboard. You also become
responsible for the line, if you weren't before. The command is rarely
needed, because the default home terminal line is the first one into which
you typed from a previously unused keyboard. If you lose responsibility for
your home line, the system will assign another of the lines you are
responsible for as your home line. (If you are not responsible for any
other lines, your keyboard is considered unused.) You can lose
responsibility because someone else maps to the line and claims
responsibility, or because the line "goes available" a few seconds after the
job on that line logs out. You can also explicitly disclaim responsibility
for a line by typing BREAK CLEAR while mapped to that line. This command
should be used when you want to permanently dissociate your physical
terminal from the line, e.g., when you move to another room.
Video Switch Commands
The keyboard mapping commands automatically also tie your screen to the line
to which your keyboard is being mapped. To tie your screen to a different
line, type BREAK n L (note that this is completely unrelated to the ESC n L
command described earlier!), and to tie it back to the line to which your
keyboard is mapped type BREAK L. As for ESC M, there is a form of this
command which refers to a programmer name: ESC [ prg CONTROL-L ties your
screen to a line being used by that programmer. The command BREAK G ties
your screen to another line in use by the same programmer name as the one
you are already tied to. Thus, BREAK G is to BREAK n L as BREAK M is to
ESC n M. The same privacy rules which affect keyboard mapping also apply to
screen tying.
When a screen is tied to a line, the program running under control of that
line may modify the video map of the line, and such changes affect any
screen tied to the line. The following video switch commands select a video
map for your screen which is independent of any program selection. After
you give such a command, your screen is untied until you give a tying
command like BREAK L.
Video switch commands are generally of the form ESC n x, where n is a
channel number (Data Disc or analog channel) and x is the command letter.
The form BREAK n x interprets n as a terminal line number if n is a valid
Data Disc line number, and selects that line's main channel. (This is not
the same as BREAK n L, which selects whatever channel(s) the specified line
has in its map!) Thus, ESC 30 S selects Data Disc channel 30, but BREAK 70 S
selects whatever channel is assigned to TTY70. ESC x with no number selects
the main channel associated with the line to which your keyboard is mapped.
BREAK n x where n is between 3 and 6 selects analog channel 40+n. The
reason for this alternate notation is that these analog channels are TV
receivers, and the BREAK n x command selects the sound from the
corresponding TV set (see the audio switch section below) as well as the
picture. BREAK x with no number selects the available channel, the one
which is seen by screens not in use. This channel contains a display of
status information for all jobs logged in.
For the remainder of this subsection, the notation { ... } means that the
characters inside the braces are optional, e.g., BREAK {n} S in the next
paragraph means that the paragraph applies both to BREAK n S and to BREAK S
without an argument. The notation [ ... | ... ] means that any of the
characters shown may be used, e.g., [ESC|BREAK] means that the paragraph
applies to both the ESC and the BREAK form of a command. (The two forms are
distinguished by the interpretation of the command argument, as explained in
the previous paragraph.)
The commands ESC n S and BREAK {n} S untie your screen and set its untied
map. (Note that ESC S with no argument is interpreted specially, as
explained below.) The map will not be changed until you give another video
switch command.
The [ESC|BREAK] {n} T commands (note that ESC T is included) are temporary
mapping commands. In addition to the effect described above, they set a
flag bit associated with your screen so that when the program on the line to
which your keyboard is mapped does a video switch RESET operation (either
explicitly or because of a RESET of the job as a whole) you are
automatically re-tied to that terminal as if you had typed BREAK L. The
flag is cleared by [ESC|BREAK] {n} S and by the tying commands (the keyboard
mapping commands and BREAK {n} L).
The commands [ESC|BREAK] {n} [A|D] add and delete channels to and from the
map which you are currently watching, without modifying your tied/untied
status. If you are untied, your screen's untied map is modified. If you
are tied, the command affects the map of the line to which you are tied; if
that line has a program-selected temporary map (one which will last only
until a program reset), only the temporary map is modified. In other words,
if there is a temporary map in effect, the escape command will be temporary
also. (Note: the temporary and permanent maps associated with a virtual
terminal line are unrelated to the distinction between the temporary and
permanent untying commands S and T, which affect physical screens.) Note
that if you are untied, these commands affect only what you see, but if you
are tied, they affect other users who are tied to the same line you are.
The ESC S command with no argument is interpreted differently from the other
video switch commands. It ties you to the line to which your keyboard is
mapped, like BREAK L, and also sets that line's temporary and permanent maps
to its main channel (the one assigned to it when it was first typed on).
Thus, ESC S undoes whatever video switch manipulation your program has done
as well as tying you to it. It affects other users tied to the line you are
mapped to. Note that only ESC S has the effect described in this paragraph,
not, e.g., ESC T. ESC S, like other forms of video switch reset, re-ties
anyone who is keyboard-mapped to your line but untied by [ESC|BREAK] {n} T.
Spying on Hidden Terminals
When someone hides his or her terminal (by typing ESC H), it is considered a
severe violation both of common courtesy and of laboratory policy to
override the hidden status and spy on the terminal, unless at the specific
request of its owner. Occasionally, though, you may want to see your own
hidden terminal while you are in someone else's office, or someone may ask
you to override hiding. For this reason, special escape commands are
provided which allow you to map or tie to hidden lines. These commands are
prefixed with the special character CONTROL-META-TOP-UNSHIFT-BREAK (That is,
the SHIFT and SHIFT LOCK keys must not be held down!) This character is
known as MAGIC and the commands which use it are magic mapping commands.
The commands are equivalent to ordinary mapping commands, except that they
ignore hiding:
magic cmd equivalent normal cmd function
MAGIC n M ESC n M kbd map to TTYn
MAGIC n L BREAK n L tie screen to TTYn
MAGIC G BREAK G tie to same prg
MAGIC n S ESC n S map screen to DD chan n
MAGIC n A ESC n A add DD chan n to map
MAGIC n T ESC n T temp map screen to DD chan n
MAGIC [ prg ] ESC [ prg ] kbd map to prg
MAGIC [ prg CTL-M ESC [ prg CTL-M kbd map to prg
MAGIC [ prg CTL-L ESC [ prg CTL-L tie screen to prg
When you type ESC H, anyone who is mapped or tied to your line will be
mapped to his or her home terminal line, or tied to the line mapped to if
not the same as yours, even if magic-mapped. But they can repeat the magic
mapping command after you type ESC H.
2.8 III Control
At a III terminal, several different display programs, called pieces of
glass ("pog"), may be running at once. You can choose which of these (zero
or more at once) are actually displayed.
ESC n S selects piece of glass number n only. ESC n A adds piece of glass
n, and ESC n D deletes pog n. If no numeric argument is used, these
commands apply to all pogs, e.g., ESC D clears all pogs from the screen.
ESC C eliminates all pogs (your page printer is unaffected). It is
different from ESC D in that the display programs are completely forgotten,
so they cannot be reselected.
Note that the selection of display programs can also be controlled by a UUO
in your program.
2.9 Audio Switch Control
Associated with each Data Disc or III terminal is a loudspeaker which can be
connected to various sound sources under computer control, by an audio
switch analogous to the video switch for Data Disc channels. There are 20
(octal) audio switch input channels, numbered 0 to 17. Only one channel can
be connected to your speaker at a time.
For Data Disc terminals, the audio switch selection applies to a physical
terminal, not to a virtual terminal line. Program-initiated audio switch
selections affect the physical terminal which is responsible for the
program's terminal line, if any.
One of the input channels is normally silent, but is connected to the
telephone paging system when a page is in progress (i.e., someone has dialed
9 on the intercom line). When you are listening to another channel, you may
choose to be switched to the paging channel automatically when a page is in
progress and then returned to your original channel.
The command ESC n U will select audio channel n and allow paging
interruption. BREAK n U selects channel n and does not allow paging. ESC U
selects the silence/paging channel.
At a Data Disc, the BREAK n [S|A|T] commands, with n between 3 and 6
inclusive, select both picture and sound from a TV receiver. Specifically,
video channel 40+n and audio channel 10+n are selected.
Your program can control the audio switch selection for your terminal by
UUO. Although programs cannot in general change the audio switch setting
for another terminal, there is a BEEP UUO which can be used to cause any
terminal's loudspeaker to be connected to the beep generator for a short
time (less than one second). This is used by, e.g., the SEND command to
call the recipient's attention to a message on his screen. You can permit
or refuse such beep connections by UUO or by escape commands; BREAK B
refuses beeps, and ESC B permits them. Any change to your audio switch
setting by other means (e.g., ESC U) also cancels the effect of BREAK B, so
you must repeat the BREAK B command after changing your selection.
The ESC Z command enables automatic beeping for the job controlled by your
terminal line (virtual terminal for Data Discs), so that you will be beeped
whenever your program runs for 15 seconds or more of real time and then
becomes ready for you to type something. More precisely, if you are enabled
for this automatic beeping, then you will be beeped when your job enters
STOPQ, or IOWQ for TTY input, or INTWQ for TTY interrupts only, provided
that your job's incremental run time plus wait time is 15 seconds or
greater. A job's incremental wait time is the amount of time spent waiting
for the system since the last command was given that caused the program to
leave TTY input IOWQ or STOPQ. This wait time corresponds precisely to the
incremental run time displayed on the WHO line--both incremental times are
reset at the same instant. Also, if you type BREAK X or a similar command
which causes the incremental times never to be reset, then you will never be
beeped automatically.
The command ESC n B can be used to make a temporary selection of the
silence/paging channel for n minutes. This is useful when listening to the
radio, to avoid commercials or obnoxious songs. BREAK n B is the same, but
disallows beeps during the n minutes.
The BREAK U command will undo a temporary selection of the paging channel.
More specifically, if you are listening to a telephone page, BREAK U will
restore your regular audio selection, but will not prevent future paging
interruptions; if there is no page in progress, but you are connected to the
paging channel because of an ESC n B command, the effect of that command is
cancelled.
As we go to press, the following audio switch inputs are connected:
0 silence/paging
1 digital-to-analog converter channel A
2 KDFC
3 Systems Concepts synthesizer
4 FRM synthesizer
5 beep generator
6 KJAZ
7 KPFA
10 KARA
11 KSJO
12 K101
13 old cart TV receiver
14 new cart TV receiver
15 lounge TV receiver
16 silent channel
17 KSAN
Audio inputs 13-16 correspond to video inputs 43-46.
2.10 Datamedias
The WAITS facilities which are designed for display terminals are available
to users outside the laboratory through a specially modified version of the
Datamedia Elite model 2500A terminal. Hereafter, in this manual, the word
"Datamedia" (or "DM") will be used to mean one of these specially modified
terminals. (Programmable terminals which can be made to simulate a
Datamedia will, of course, also work.)
The most important modification required to a standard Datamedia to make it
work as a WAITS display terminal is the SUMEX keyboard. This keyboard
contains two keys near the space bar, labelled EDIT. These keys control the
eighth (200 octal) bit of the characters sent to the computer; in a normal
terminal this bit is unused, or used as a parity check for the transmitted
characters. The EDIT key, in other words, is a shift-like key used along
with some other key, like the CONTROL and META keys on local SAIL displays.
Please note that the control (CTRL) key on the Datamedia is not the same as
the Stanford CONTROL key. Instead, CTRL is like the Stanford TOP key: it is
used to generate the nonstandard Stanford graphic characters. The CTRL key
subtracts 100 octal from the character code normally produced by a character
key. For example, the letter T is octal code 124; CTRL-T is 024, which is ∀
in the SAIL character set. The command HELP DMKEY will print on the XGP a
list of the correspondences between CTRL characters and the SAIL
equivalents, along with other information about the DMs.
Since Datamedias are not permanently connected to the computer, but are used
through telephone or ARPAnet connections, you must tell the monitor that
your terminal is a DM before it can be used as a display. This is done with
the TTY command; this command is followed with a keyword specifying some
property of your terminal. Most functions of the TTY command are meant for
non-display terminals, but a few are used for Datamedias. For example, the
basic command to tell the monitor that your terminal is a Datamedia is
TTY DM. The command TTY NO xxx will have the opposite effect from TTY xxx.
Note: if you often use the system remotely from a DM, you can get the LOGIN
program to give the necessary TTY commands automatically when you log in;
see Section 5.1. Here are the TTY keywords concerning DMs:
DATAMEDIA n Tells the system you are at a DM. The number n, if used,
tells the system the number of lines your terminal can display
on its screen; this is needed only for a programmable terminal
simulating a DM. TTY NO DATAMEDIA waits for all already-queued
output to be sent to your terminal, and then sends a message to
let you know you have become a non-display, and puts the
terminal in ROLL mode.
DM n Tells the system you are at a DM. Just like DATAMEDIA.
DM128 n Tells the system you are at a DM which can display the ASCII
control characters (001 to 037 octal) when they are output
preceded by an ASCII escape character (033).
BLINK Tells the system to display the nonstandard graphics as
blinking or bold letters. This is the default; TTY NO BLINK
will display them as ordinary letters instead. Your terminal
must already have been declared a DM when you give this
command.
BOLD Same as BLINK.
BS Tells the system that your terminal can display a special
graphic representation for the BS (octal 177) character. Your
terminal must already have been declared a DM when you give
this command.
You should also read the description of the TTY command as used for
non-display terminals, in Section 3. Some non-display keywords are also
meaningful for DMs.
The information which follows is taken from the file DM.ME[UP,DOC]; that
file also contains important information about how to set up a telephone
connection to the PDP-10 from your DM, and how to use a DM through the ARPA
network.
Since the DM keyboard does not have keys for all of the Stanford characters,
certain characters must be typed in their ASCII CTRL form; for example,
partial-sign (∂) is ↑O and thus must be input as CTRL-O. Also, since the DM
display does not have symbols for all the Stanford characters, those
characters that must be typed in as CTRL-something will be displayed in a
special form, namely as either BOLD-something or as BLINKING-something. On
SU-AI DMs, CTRL-something will appear as BOLD-something; on other DMs that
have not been modified to interchange the BLINKING and BOLD functions,
CTRL-something will appear as BLINKING-something. For example, on SU-AI DMs
partial-sign (∂ or ↑O) will be displayed as BOLD-o; on non-modified DMs it
will be BLINKING-o. If you have a non-modified DM and don't like blinking
(you won't), then type TTY NO BLINK.
Some DMs have been modified to display the IMSSS character set, a slightly
modified version of the SAIL character set. If you have one of these IMSSS
modifications, the command TTY DM128 will tell the system to display the
SAIL characters as they are shown locally (more or less).
Here is a summary of what you have to type to get certain effects:
To get ESC, type NUL.
To get BREAK, type NUL and then - (minus sign).
To get CONTROL-<char>, type EDIT-<char>; that is, hold down EDIT while
typing <char>.
To get META-<char>, type EDIT-NUL and then <char>.
To get META-CONTROL-<char>, type EDIT-NUL and then EDIT-<char>.
To undo ESC or BREAK, type DEL.
To undo META, type NUL and then DEL.
To get CLEAR, type the bottom unlabelled key at keyboard left, or MR.
To get FORM, type ↑L.
To get BS, type DEL.
To get ALT, type ESC.
To get CALL, type CALL.
To get deferred CALL (CONTROL-CALL), type EDIT-CALL.
To suspend typeout, type HOLD; to resume typeout, type HOLD again.
The three characters β, ≡, and ∨ are hidden under the keys CALL, CLEAR, and
HOLD, respectively. To get one of the characters β≡∨, you must quote it by
preceding it with NUL. However, if you want META with the character, then
the quoting is automatic with the add-META command EDIT-NUL. Thus you
cannot type META-CALL, META-CLEAR, or META-HOLD because you would get
META-β, META-≡, or META-∨ instead.
The line editor works as on local display terminals, except that there is no
line cursor, only a character cursor. However, the characters in the line
editor are displayed bold or blinking. The escape commands which are not
specific to Data Discs or to IIIs (those in Section 2.4 through Section 2.6)
are available on DMs.
When you tell the system that your terminal is a Datamedia, it will erase
the DM screen and then set the DM's tab stops while typing an initialization
message at the top of the screen. If you have a DM terminal that lacks
hardware tabs (all of the AI Lab's DMs have them), then you should type
TTY NO TABS; in that mode each tab to be output will be converted to an
equivalent number of spaces, which will of course usually take longer to
output than just a tab. If you log in before telling the system you are on
a DM, the system will assume that your DM does not have hardware tabs unless
you say TTY TABS.
If you do not get the initialization message, then you should immediately do
a BREAK P (i.e., the three characters NUL - P) to force it. If you don't
type BREAK P in this case, there is no guarantee of consistent output as
your terminal may have its cursor at some place other than where the system
thinks it is. If BREAK P doesn't get you the initialization message but
does erase and redraw the screen, then type the monitor command TTY TABS
(unless your DM terminal doesn't have hardware tabs), which should get you
the message at the top of the screen. If typeout is garbled after correct
initialization, then either you are having phone line trouble or there is a
bug in the DM display service--the former is the best guess. If it happens
repeatedly on one particular phone line, you should report it with the GRIPE
command.
While you are holding (even if the HOLDING message does not appear), your
line editor will appear on the HOLDING message line (the third line of the
screen).
Two escape commands are available to DM users for suppressing user program
display output outside of a specified range of columns on the display. ESC
m < (where m is decimal) suppresses all user display output to the left of
column m, and ESC n > (n decimal) suppresses all user display output to the
right of column n. The only type of output these commands affect is user
program output generated by the UPGIOT UUO (i.e., display program output),
and even then it does not affect output in insert/delete mode nor does it
affect output of RETURNs and LINEs.
Note that ESC 5 < (for example) will suppress output to the left of column 5
and therefore whatever text already appears in columns 1 to 4 will
(normally) not be erased even when new text appears starting in column 5.
However, after an ESC 40 > (for example) old text in columns 41 to 80 will
usually be erased by new text at or before column 40 since output of actual
text usually causes the rest of the line to be erased (except when this
erase-to-end-of-line feature is inhibited). Also, if, for example, ESC 20 <
and ESC 10 > are given, all output is suppressed except for RETURNs and
LINEs and the line erases.
Thus these commands can be used to speed up displaying by E, WHO and other
display programs by suppressing unneeded output.
ESC < resets the left DM margin to zero and ESC > resets the right DM margin
to infinity. ESC N resets both margins, as does a RESET or DPYCLR UUO.
BREAK > sets the right margin to 0, thus suppressing all text.
3 NON-DISPLAY TERMINALS
Any terminal other than a Data Disc, III, or known Datamedia is considered a
"non-display" whether or not it uses a display screen for its output.
Non-displays are sometimes called "Teletypes" after a particular brand of
terminal. They cannot use the special display facilities described in the
preceding sections, such as the line editor and WHO lines. However, some of
those facilities are approximated by special commands for non-display
terminals. Connections over the ARPA network or by telephone are considered
non-displays unless declared to be Datamedias by the TTY DM command.
The CTRL (CONTROL) key on a non-display does not produce the same codes as
CONTROL on a display. Instead, it produces codes which, on display
terminals, represent some of the TOP characters. Most programs which deal
with non-displays, however, either cleverly use only characters which are
the same on all terminals, or have special notations for use at
non-displays. In particular, there is an SOS representation (named after a
non-display editor) for printing characters not found on non-displays,
namely a question mark followed by some other character. See Appendix 13.
The CTRL key generally subtracts 100 octal from the corresponding upper case
letter, e.g., CTRL-D is 004 octal, 100 less than D, octal 104. Non-display
control characters are usually echoed as uparrow (or circumflex on some
terminals) followed by the corresponding non-control character, e.g., ↑D for
CTRL-D.
There are a few cases in which the same graphic character is represented by
different codes in standard ASCII and in the SAIL extended character set.
Since non-displays have standard ASCII characters, these codes are converted
on input and output. Here are the converted codes:
char Stanford ↔ external
~ 32 ↔ 176
} 176 ↔ 175
ALT 175 ↔ 33
≠ 33 → 33
EOF 612 ← 32
To get the effect of CALL, type CONTROL-C twice. (Now you know why CALL on
displays prints ↑C.) Deferred CALL is a single CONTROL-C.
Although there are several models of non-display terminal, some do not have
lower case letters. The SHIFT key on these terminals, like the TOP key on
our displays, produces non-alphanumeric printing characters. Most of these
are labelled on the keys, but you may not find [ (SHIFT-K), \ (SHIFT-L), or
] (SHIFT-M) labelled on some models.
There is no line editor on non-displays. You can delete the last character
on a line by typing RUBOUT, which prints a backslash and then the deleted
character. Successive RUBOUTs will print the characters deleted, until a
non-RUBOUT, which prints another backslash and then whatever you typed.
CONTROL-U will delete the entire line, like CLEAR on a display.
If your terminal is actually a display, even though not a SAIL one, and is
capable of deleting a character from the screen in response to the output
sequence backspace-space-backspace, you can get the system to use that
method of indicating deletions, rather than the backslash notation, by using
the TTY GLASS command described below. Such a terminal is called a glass
TTY.
The end-of-file character for non-displays is CONTROL-Z. If your program
does input by TTYUUO, CONTROL-Z is converted to 612 (the code for
CONTROL-META-LINE). TAB is typed as CONTROL-I. FORM is CONTROL-L, and VT
is CONTROL-K. RETURN, LINE, and ALT have corresponding non-display keys.
(The key for ALT may be labelled ALT MODE, ESCAPE, or PREFIX depending on
when the terminal was built; if none of these appears, type CONTROL-[ to get
ALT.)
Some escape commands for displays have non-display equivalents. CONTROL-O
flushes typeout like ESC O. A second CONTROL-O resumes typeout like BREAK
O. CONTROL-B starts and stops typeout holding, like CONTROL-BREAK and
CONTROL-CLEAR on display terminals.
3.1 Non-display ESCAPE commands
The character ↑← (octal 37, ASCII control-underscore, or control-leftarrow
or control-slash on some keyboards) is used as a prefix for special
commands, like ESC on a display. The ↑← character is not echoed. The
following commands are now defined:
↑←↑B send an α (alpha, ↑B) to input buffer
↑←↑C send a β (beta, ↑C) to input buffer
↑←↑O send a ∂ (partial-sign, ↑O) to input buffer
↑←↑U send a ∃ (there-exists, ↑U) to input buffer
↑←↑Z send a ≠ (not-equal) to input buffer
↑←↑← send an ∨ (or-sign, ↑←) to input buffer
↑←- negate arg for following command
↑←0:↑←9 decimal arg for following command
↑←↑W delete the last word on the input line
↑←C add CONTROL (200) bit to the next character
↑←D add Double-bucky (CONTROL-META, 600) bits to the next character
↑←F full character set
↑←H hide terminal
↑←I interrupt program
↑←L delete back to next character typed
↑←M add META (400) bit to the next character
↑←N No-op, but undo pending bucky bits
↑←R redraw the current input line
↑←V force a FILES command
↑←W force a TTY WHO command
↑←X control XTIME, like ESC X on display
↑←Z enable automatic beeping, like ESC Z on display
Lower case letters are the same as upper case. Undefined commands are
echoed as a bell and otherwise ignored.
The first set of special commands are used to "quote" characters which
normally have special meanings on a non-display terminal, namely, ↑B
(hold/unhold), ↑C (call), ↑O (suppress output), ↑U (clear input), ↑Z (end of
file), and ↑← itself. The corresponding SAIL characters are α (002, ↑B), β
(003, ↑C), ∂ (017, ↑O), ∃ (025, ↑U), ≠ (033, represented by ↑← ↑Z), and ∨
(037, ↑←).
The digits and minus sign are used to create an argument to a following
command, as for ESC on a display. Minus sign is like BREAK on a display.
For example, ↑← F turns on full character set mode, and ↑← - F turns it off.
The digits or minus sign are typed between the ↑← and the command character,
e.g., ↑← - 2 7 W.
The ↑← ↑W (word delete) command is like a succession of rubouts; it deletes
characters until the first (rightmost) letter or digit, then deletes until
the first character which is not a letter or digit, not including that
character. The deletions will be echoed with the backslash notation or by
erasing the characters deleted depending on the TTY GLASS bit. ↑← n ↑W
deletes n words.
The commands ↑← C, ↑← D, and ↑← M can be used to type a character with
Stanford CONTROL and META bits into your program. C stands for Control, M
for Meta, and D for Double-bucky (CONTROL and META). You can also say
↑←C↑←M instead of ↑←D. These commands echo as [C] [M] or [D]. The bits are
applied to the next ordinary character you type. If you change your mind,
↑← N will restore the No bucky bit state.
The commands ↑← F, ↑← H, and ↑← I correspond to the ESC commands for those
letters: F sets the full character set bit, H sets the hidden bit, and I
interrupts your program. Type a minus sign after the ↑← and before the
letter to invert the sense of the command, e.g., ↑← - H unhides your
terminal.
The ↑← R command echoes a crlf and then retypes the text in the current
input line; it is useful if the line is full of deletions and you have
trouble reading it.
The ↑← W command types out your job's WHO line on the terminal. ↑← n W
types job n's WHO line, and ↑← - n W types the WHO line for the job using
TTYn.
↑← N (stands for No-op) does nothing, except that if bucky bits have been
set by ↑←C, etc., it will echo as [N] and forget the bucky bits. It is also
good for cancelling a ↑← command you've started typing.
↑← n V does a FILES command for job n (your own job if no argument) without
having to stop your program. See page 38. ↑← - n V does a FILES command
for the job using TTYn.
↑← L followed by a character deletes back to that character, like CONTROL-L
on a display. ↑← n L char will do it n times, like CONTROL-n CONTROL-L
char.
↑← X and ↑← Z are like ESC X and ESC Z on displays (control XTIME and enable
automatic beeping, respectively.)
3.2 The TTY Command
The TTY command provides some of the ESC facilities for non-displays along
with some other control features. It takes as argument a keyword specifying
the thing to change. As in typing monitor commands, only enough letters of
the keyword as necessary to make it unique need be typed. The keyword may
be preceded by NO or - to reset the corresponding switch, e.g., TTY NO TABS
or TTY -TABS. The TTY command is legal from displays as well as
non-displays, but the keywords ARROW, CONVERT, ECHO, FILL, GLASS, and WIDTH
have no effect on display terminals. The TABS keyword has no effect on
displays other than Datamedias. The keyword WIDTH also has no effect on
PTYs which are not ARPA PTYs. You need not be logged in to give the TTY
command, except for the keywords UPDATE and TIME. (Additional TTY command
keywords for Datamedia display terminals are described in Section 2.10.)
A command of the form TTY TTYn keyword will cause the effect of a
TTY keyword command for TTYn instead of your own TTY. This command is
allowed only if the target TTY is not in use, or is owned by your job, or if
you have the DEV privilege (see Section 6).
Here are the non-display keywords and their meanings:
ARROW Causes character codes less than 40 octal to be echoed as
uparrow-letter (e.g., ↑A for octal 001) rather than as the code
itself, except for BEL (7), TAB (11), LF (12), VT (13),
FF (14), and CR (15).
BEEP Enables automatic beeping after long computations, like ESC Z
on a display.
BREAK n xSame as typing BREAK n x (where x is a command letter) on a
display. Works for these command letters: F, H, I, V, X, and
Z.
CONVERT Enables the SAIL-ASCII character conversions mentioned above.
This is the default state except for non-ARPA PTYs, but can be
turned off with TTY NO CONVERT.
ECHO Tells the monitor to send back to the terminal the characters
you type in.
ESCAPE n x Same as typing ESC n x (where x is a command letter) on a
display. Works for these command letters: F, H, I, V, X, and
Z.
FILL Tells the monitor to insert extra carriage returns when a
return is typed out at the terminal, to give the carriage time
to return to the left margin. This is used principally for 30
character per second terminals.
FULL Declares that the terminal has lower case letters, and lower
case should not be converted to upper case by the monitor.
Equivalent to ESC F on a display; NO FULL is like BREAK F.
GAG Don't allow messages from other users to be typed out. This is
the default for non-ARPA PTYs.
GLASS Echo rubout as backspace-space-backspace instead of using the
backslash notation for deleted characters.
HANG Hang up the phone line associated with the TTY. This is meant
to be used for some TTY other than your own.
SPEED n Set the speed of the terminal to n, which must be one of 110,
150, or 300. Works only for low-speed dialup lines.
TABS Declares that the terminal has hardware tabs, so the monitor
will not convert tabs to spaces on output.
TGAG Prevent messages from other users, like GAG, but only until the
next program reset.
TIME Resets XTIME and inhibits automatic resetting, like ESC 1 X.
NO TIME, like BREAK 1 X, sets XTIME to the total run time.
UPDATE Enables automatic resetting of XTIME, like ESC X from a
display. NO UPDATE is like BREAK X. See XTIME on page 19.
WHO Types out your job's WHO line. "TTY WHO n" will type the WHO
line for job n, "TTY WHO -n" the WHO line for the job using
TTYn. "TTY WHO 0" or "TTY -WHO" will type the system WHO line.
WIDTH n Sets the maximum number of columns for TTY output to the
decimal value n, which should be between 16 and 256.
4 BASIC MONITOR COMMANDS
Commands like LOGIN tell the monitor to run particular system programs in
your core image. In this section, monitor commands which do not refer to a
specific program are described. Some of them do not refer to programs in
your core image at all, but are handled entirely within the monitor itself;
others run programs, but allow you to specify the program as a command
argument rather than implying a particular one like LOGIN.
4.1 Running Programs
The RUN command takes as arguments an optional device name, a file name, and
an optional core size argument. If the first argument is not a device name,
DSK is used. The only allowable devices are DSK, SYS, UDPn, MTAn, and DTAn.
Running programs from magnetic tape or DECtape is not recommended. If the
file name does not include an extension, DMP is assumed.
The core size argument, if any, should be a decimal number indicating the
number of 512-word pages desired for your core image. This must be at least
as much as the saved core image, but you can ask for more. Certain programs
with variable buffer space will use as much as you initially allocate.
(Programs can increase their core size dynamically by UUO.)
If you are running from magnetic tape, the core size must be specified
because the monitor cannot determine the size of a file on magnetic tape
before reading it.
The program is loaded into your core image, your job name is set to the name
of the dump file, and the program is started at the starting address
specified in the dump file.
The R command is used for running system programs. Note that R is a
separate command from, and not an abbreviation for, RUN. The command
R FOO 10
is identical to
RUN SYS:FOO 10
The SYS device is actually the disk, but with the special system directory
[1,3] implied. This directory is used to store system dump files. Any PPN
given explicitly with the R command is ignored; the PPN used is [1,3] no
matter what.
By using the GET command (abbreviated G), it is possible to load a dump file
into your core image without starting it. This command takes the same
arguments as RUN, but instead of starting the program, it types out a
message indicating the size of your core image and leaves your terminal in
monitor mode.
Each of the RUN, R, and GET commands causes a RESET of your job.
4.2 Manipulating Core Images
The following commands refer to words in the Job Data Area (see page 13) of
your core image. These words are generally set up by the monitor or the
LOADER. The UUO Manual has a complete explanation of the Job Data Area.
The CORE command is used to find out or change the size of your core image
in 512-word pages. CORE may be abbreviated C. If you include an argument,
the size of your core image will be set to that many pages. If you do not
give an argument, three lines of information are typed out in one of these
two forms:
NNN pages JJJ+KKK pages
MMM pages maximum MMM pages maximum
UUU pages user core UUU pages user core
The first form is used if you have no upper segment, the second if you do
have an upper segment. NNN is the current size of your job in pages (no
upper); JJJ is the size of your lower segment and KKK is the size of your
upper segment; MMM is the maximum size allowed for your job (lower segment
plus upper segment, if any); and UUU is the amount of core currently
available for use by user jobs (i.e., core that is not being used by the
system). If you give the CORE command when you are not logged in, you do
not get the first line.
The command CORE 0 destroys your core image. It also causes a system RESET
of your job, releasing any I/O devices your program was using, etc.
The way to create core image dump files which can be loaded later is with
the SAVE command. This takes device, file, and size arguments just like
GET. This command also does a RESET, and it does not save your
accumulators. Therefore, the program cannot be continued after a SAVE
command, although it can be restarted.
Dump files on the disk can be copied (in binary mode), renamed, etc., like
any other files and will still be runnable as programs. However, dump files
on DECtape are written differently from other files, and cannot just be
copied by normal file operations. Instead, to store a dump file on DECtape,
you must load it into your core image and give a SAVE command to the
monitor.
Unless your core image includes DDT or RAID (JOBDDT nonzero), only the
locations up to the address in JOBFF are saved. (This does not apply if you
use a core size argument.) JOBFF is set by the LOADER to one more than the
highest address it loads into, so any core which was allocated dynamically
by your program will not be saved unless the program updates JOBFF. I/O
buffers allocated for you by the system are allocated above JOBFF, which the
monitor then sets to the new first free address.
If your program includes an upper segment which you wish to save, you should
use the command SSAVE. This is just like SAVE in other respects. SAVE
never saves upper segments.
It is possible to examine and alter words in your core image individually by
monitor commands. The command E (examine) with an octal argument will type
the contents of the specified address in octal. The DE (deposit) command
takes three arguments in octal: the left and right halves of the word you
want to deposit, and the address. DE without the address argument uses the
address of the last E or DE command. E with no argument examines the
location following the last one used by E or DE. (Note that the DDT and
RAID debugging programs provide a much more versatile way to examine and
modify your core image.)
If your core image includes an upper segment (see page 13), you can set or
clear the write protection bit with the SETUWP or CLRUWP commands. You
cannot clear write protection for a sharable upper segment if it is
protected against you. (See the UUO Manual for a complete discussion of
upper segment protection.) These commands also take an optional octal
argument, which is used to set the protection code for the segment if you
are permitted to change the code.
4.3 Starting Programs
The following commands refer to words in the Job Data Area (see page 13) of
your core image. These words are generally set up by the monitor or the
LOADER (except for JOBREN). The UUO Manual has a complete explanation of
the Job Data Area.
The START command (abbreviated S) is generally used to start a program at
its normal starting address in JOBSA. This command can also be used with an
octal argument specifying some other address. If the octal argument is
preceded by + or -, the number is added to or subtracted from the program's
normal starting address to determine the desired starting address.
The REENTER command starts the program at the reenter address specified in
JOBREN, if there is one. JOBREN must be set by the program if it wants to
use this capability. Program documentation will explain the use of the
REENTER command for a particular program. An octal argument preceded by +
(optional in this case) or - will be added to or subtracted from the reenter
address.
The DDT command starts the program at the address in JOBDDT, if any. This
address is set by the LOADER if either DDT or RAID (the debugging programs
for non-displays or displays) is loaded with your program.
When a program is stopped by typing CALL, by a UUO in the program, or by
various other conditions, the address of the next instruction to be executed
is stored in JOBPC. If the job is continuable (not stopped because of an
irrecoverable error), the CONTINUE command will start it at that address.
(The START, REENTER, and DDT commands will work even if the job is not
continuable, except for certain errors which destroy the core image
irretrievably.)
All of the above commands place your terminal in user mode, that is,
anything you type will be processed under control of your program. It is
also possible to start a program, but leave the terminal in monitor mode.
In this case you can still enter monitor commands which do not affect your
core image. Monitor commands which are illegal while your program is
running will give the message PLEASE TYPE ↑C FIRST.
The CSTART command is like START but leaves your terminal in monitor mode.
Like START, it will take the desired start address as an argument or use the
contents of JOBSA. The CCONTINUE command is the monitor mode equivalent of
CONTINUE. There is no such equivalent for REENTER or DDT. With the
terminal in monitor mode, the program can still type output on it, but an
attempt at reading from the terminal will make the job wait (in IOWQ) until
the terminal is placed in user mode.
The HALT command stops your program. The monitor converts the CALL key into
this command, so you should never need to type it explicitly. (The only
time you can type it explicitly, of course, is if you started the program
with CSTART or CCONTINUE.)
4.4 Detached Jobs
Normally, any user job is associated with a particular terminal. However,
it is possible to detach the job so it can continue running while you do
something else (another job) at your terminal. Also, the monitor sometimes
starts up detached jobs itself to perform various system functions; such
jobs are called phantoms.
Detached jobs can run, and do all the things attached jobs can do, except
that if they try to output to device TTY, the output is lost; attempted
input from TTY makes the job wait indefinitely (until it is attached). If a
detached program executes an EXIT UUO, the job is killed.
The DETACH command detaches your job, leaving your terminal in monitor mode
and not logged in. You can then log in again without affecting the old job.
DETACH takes no arguments. Several commands described below combine the
DETACH function with other useful things. Please remember not to leave jobs
detached forever, but to log them out eventually!
The ATTACH command is used to attach your terminal to a detached job. If
you are already logged in, your old job is detached. The ATTACH command
takes two arguments, a job number and the PPN under which that job is logged
in. (If you are already logged in with the same PPN, you need not give the
second argument.) Note that if you were displaying a WHO line for your old
job, it will still be displayed, indicating the job as detached. This is
handy for re-attaching it when you want to, in that it shows the job number.
(Typing ESC W again will, of course, display the WHO line for your new job.)
You can attach a phantom (not logged in) job only if you have the ATT
privilege, in which case this command will also log in the phantom by
turning on the JLOG bit in its job status word. You can, however, attach a
phantom job if you are already logged in with the same PPN as the job you
are trying to attach, and the programmer name is not SYS.
If you are at a non-local terminal, and are not logged in or are logged in
with a PPN different from the one of the job you are trying to attach, the
ATTACH command will run the LOGIN program, which will require you to type
the password for the PPN to which you are attaching. A password is also
required to attach a privileged job, even from a local terminal, unless you
already have all its privileges.
You can attach a job which was already attached, thereby stealing it away
from its original terminal, as long as the above PPN conditions are met. A
message will be typed on the job's original terminal indicating that the job
has been attached away, and by whom. If your PPN before typing the command
was not the same as the attached job's PPN, the message will also be typed
on the console terminal in the machine room.
If you give the ATTACH command with no argument, it will look for a detached
job with your PPN to attach. Repeating the command will cycle through all
such jobs. The command will tell you the job name and number of the job it
finds.
The FORK command will detach your old job and log in a new one. It is
faster than DETACH followed by LOGIN, because it does not run the LOGIN
program. Instead, it merely copies the system information from your old job
into the new job. In particular, if you have an alias in your old job, it
is copied to the new job as well. If the system's job capacity is used up,
so that it is impossible to start a new job, your terminal remains attached
to the existing job.
Often you want your program to continue running in the old job while it is
detached. You could say CCONTINUE and then DETACH, but the command CDETACH
combines these functions. There is also a CFORK command which combines
CCONTINUE and FORK.
4.5 Device Control
Certain I/O devices can only be used by one user at a time, such as a
magnetic tape unit. In some cases, like the line printer, the system
provides a facility for queueing print requests so that individual users
need not actually control the device themselves. However, when a user does
need to use such a device, the ASSIGN command is used to ensure that only
one user at a time tries to use the device. The ASSIGN command (abbreviated
A) can also be used to cause a logical device name to be associated with a
particular device. Thereafter, any reference by your program to the logical
name will be translated into the corresponding physical device.
The command takes two arguments, a physical device name, and an optional
logical name. The physical name can be generic: the command
ASSIGN MTA
will select an available mag tape unit (MTA0 or MTA1) if there is one
available. You can also select a particular unit explicitly.
The logical name feature is sometimes used by programs to allow you to
control their I/O without having to type instructions to the program itself.
For example, a program which produces a listing output might direct it to a
particular filename on device name LST. Before running the program, you
could type
ASSIGN DSK LST
to write the listing file on the disk, or
ASSIGN TTY LST
to type it out at your terminal. You can also change the meaning of what is
normally a physical device name this way--the command
ASSIGN DSK LPT
will make a program which was written to write its output on the line
printer use a disk file instead. You might do this if the line printer is
not available when you want to run the program.
Non-local guest users (those who are not logged in) cannot use most
non-sharable devices. Since there is no operator on this system, remote
users have no way to mount tapes, collect listings, etc.; hence, the monitor
does not allow such users to attempt I/O on those devices.
The ASSIGN command is used in a special way for User Disk Packs. A UDP may
be used as a public or a private device. In the former case, other jobs may
use the same UDP at the same time, as with the system file disks. A
privately assigned UDP, however, is restricted to the one job which assigned
it. (Note: a privately assigned UDP is still a sharable device, in the
sense that the job which owns it can operate on several files
simultaneously, unlike non-sharable devices like DECtape drives, on which
only one operation can be in progress at any time.) A UDP is normally a
file-structured device, with a directory structure just like the one
described for the main file disk in Section 1.5. However, it is also
possible to use a UDP as an unstructured device, in which allocation of
storage on the disk pack is done explicitly by the user program. This mode
of using the UDP is called old mode (because it used to be the only mode
available). The format of the ASSIGN command for a UDP is
ASSIGN mode UDPn logical-name
The optional mode argument can be
PUBLIC public access, file structured UDP
PRIVATE private access, file structured UDP
OLD private access, non-structured UDP
The default mode is PUBLIC. A later ASSIGN command for the same device can
be used to change the mode from PRIVATE to PUBLIC, or from PUBLIC to PRIVATE
if no other jobs are using the device. However, to change into or out of
OLD mode, the device must first be deassigned by all jobs using it. This is
because a particular pack either is or isn't formatted for file structured
use, and the mode given in the ASSIGN command must agree with that of the
pack itself. (A mismatch is not detected when you give the ASSIGN command,
but will be caught when your program actually tries to use the device.) The
only exception is that a file-structured pack may be read, but not written,
in OLD mode.
Because of the need to distinguish between the two different UDP formats,
your program will not be allowed to open the UDP unless it is already open
or assigned. Thus, when you first mount a UDP you must ASSIGN it to specify
the mode. When a UDP has been assigned in PUBLIC mode by one job, any job
may use it without assigning it.
We currently have two drives for user disk packs: UDP1 and UDP2. The
monitor treats UDP as a generic device name; the command ASSIGN UDP will
select a free drive if there is one. An ASSIGN command which specifies a
particular drive in PUBLIC mode, e.g., ASSIGN UDP2, will succeed if the
particular drive is not in use or if it is in PUBLIC use. For more details
on the use of user packs, see the UUO Manual.
Once you have assigned a non-sharable device with the ASSIGN command, no
other job can use it until you release it with the DEASSIGN command. This
command, abbreviated D, takes either a logical or a physical device name as
argument. (Note--Assigning DSK or SYS does not prevent other users from
using the disk.) It is possible for a program to use a device which is not
assigned, but the device is released in that case as soon as the program
stops using it. The DEASSIGN command with no argument will deassign all
devices assigned by your job.
Because UDPs can be assigned in a way which permits public access, the
DEASSIGN command for a UDP types a message at your terminal indicating
whether or not the pack should be dismounted. If you interrupt a program
which is using a UDP and deassign the UDP, it will still be considered in
use by your program until you reset it (for example, by the RESET command).
You will then be told that you may dismount the pack. Also, there is a
light mounted near the drives labelled "don't unload UDP1" which is on
whenever UDP1 is assigned or inited by a program.
The job which has a device assigned may give it to another job with the
REASSIGN command. This command takes two arguments, the device name and a
job number. This can occasionally be useful if, for example, one job writes
a tape which another should then read. The REASSIGN command prevents the
possibility of another job grabbing the tape unit before the intended
recipient does.
The FINISH command (abbreviated F) with a device name argument releases the
device from your program. If the device is a directory device which your
program had open for output, the file is closed so that as much data as the
program wrote will be saved. (This applies in the case in which the program
was stopped before its normal exit, either by CALL or by an error.) FINISH
with no argument releases all devices.
The FINISH command may also be given with a job number and possible PPN
argument, like the ATTACH command. In that case, the specified job will
have all its devices released, as if a FINISH with no argument had been
typed at its terminal. The target job is notified, as for the ATTACH
command. Also, the same restrictions about FINISHing phantom jobs apply as
for ATTACHing phantoms.
The FLUSH command is used to empty the input and output buffers of a
terminal which is not in use. It takes a device name as argument; the
device must be a terminal which is not in use, or your own terminal. This
command may be used without logging in. A user with the UPG privilege can
use this command on any TTY whether it is in use or not. (Any user may have
the UPG privilege, but it must be enabled specifically before giving the
FLUSH command. See the ENABLE command, page 54.)
4.6 System Information
Several commands exist to find out various things about your job or others.
Some of these duplicate information available on the WHO line at display
terminals. None of the commands in this section affect your core image.
The PJOB command types the job number of your job, if you give the command
with no argument. If you use a device name as the argument, it types the
WHO line of the job using the device. (If the device is not in use, it says
so.) The argument can be a name of the form DDn, to find out who is using
Data Disc channel n. You will be told the TTY line number, if the channel
is in use as a terminal's main channel, as well as the owning job's WHO
line. Also, if the argument is a UDP, the command may type out UDP1 PUBLIC
if applicable, and will type a job number only if that job has assigned the
drive as PRIVATE or OLD. If the argument is TTYn and the specified line is
a PTY, then the command types WHO lines for both the job running under the
PTY and the job which owns it.
The PPPN command prints out the logged in PPN and the alias, if any, for
your own job (no argument) or the job number you give as argument.
The PTTY command prints out the terminal line number of your own or another
job. If the terminal is a Data Disc, it also prints the channel number, and
the responsible physical terminal.
The TIME command, which also takes an optional job number argument, types
out six quantities for the specified job, the first three of which are times
in hours:minutes:seconds'ticks (a tick is one sixtieth of a second):
Total is the total run time for the job.
Increment is the run time since the last time a TIME command for this
job was given by the job itself. That is, the Increment
time is reset when you give a TIME command for your own job,
but not when you give one for another job.
Wait is the time the job has had to wait for the system,
including time spent in RUNQ and disk I/O wait, but not tty
I/O wait, STOP, etc. It is somewhat of a measure of the
quality of service the job is getting.
PS (Page-Seconds) is a measure of the demands the job has made
on the system. It is incremented by the job's core size in
pages for every second of runtime.
EBOX msec is a count of the number of milliseconds of runtime as
measured by the KL-10's internal meter. This time may not
be equal to the total runtime reported first, but should be
more reproducible between runs of the program.
EBOX increment is the EBOX count since the last TIME command.
The command TIME 0 types the amount of time since the last system reload,
the clock time of the last system pause (i.e., a service interruption after
which service was resumed without a reload), and the percentage of uptime
spent running the null job (what the system does when there are no real jobs
it can run). It also types some extra information for the benefit of system
wizards, which varies with their interests at the moment and is generally
not meaningful to users, e.g., the percentage of time spent in the monitor
at interrupt level.
The DAYTIME command with no argument types the current day of the week,
date, time, and outside temperature in Farenheit and Celsius. With a job
number argument, it types the time that job logged in, the time it was last
run, and the current time. DAYTIME 0 specifies your own job. If the job
has been logged in since the previous day, dates (day of the month) are
typed along with the three times.
The RESOURCES command lists the available system resources: it types the
number of free tracks on the file disk, and the names of free devices (mag
tape, etc.) other than the disk and terminals. A separate line is typed for
each UDP drive unless the drive is detached from the system. The line
contains just the device name if the drive is free; otherwise it indicates
whether it is PUBLIC or PRIVATE; if the drive has a file-structured pack
mounted, its name (volume ID) and the number of free tracks, as for the DSK
device, will be typed if known to the monitor. (That is, the name will be
typed if any input/output operation has actually happened on that pack since
it was mounted.)
The FILES command lists disk files in use by a job, with some status
information. It can take a job number argument (0 or no argument means your
own job), in which case all files in use by that job are listed, or a
filename argument, in which case the status of the specified file is
displayed (if it is being used by any job). Each line typed by this command
contains the job number of the job using the file; the filename, extension,
and directory ppn of the file; the number of records in the file; the number
of the record currently being read or written; and the way the file is being
used: R for read, W for write, or RA for read-alter, possibly followed by E
for end-of-file seen. The letter U indicates that the file is on a UDP.
The HELLO command types the name of the current version of the monitor.
All of the above commands are legal when you are not logged in. The
following one is not.
The SLEVEL command types out your current service level reservation. The
service level system attempts to guarantee the reserved percentage of the
computer's time to programmers who make such reservations. See the RSL
command, in Appendix 6.
4.7 Miscellaneous Commands
The ALIAS command is used to set your job's disk PPN or alias. If you have
an alias, all disk references by your job which do not include an explicit
PPN will use the alias directory rather than your logged-in PPN directory.
The argument can be PRJ,PRG to set the alias to that PPN, or just PRJ to use
your login programmer name in the alias. An argument of PRJ, (i.e., with a
comma but no prg) uses your old alias programmer name. No argument resets
your alias to zero, so your logged-in PPN will be used for disk files. If
you have an alias, your logged-in PPN is still checked for file protection
purposes.
The TALK command can be used to talk to a user at another terminal. It
takes a programmer name or device name as argument. The device must be a
terminal. If a programmer name is used, the system will look for a terminal
in use by that programmer; there must be exactly one such terminal which is
available for talking. If there are several such terminals, they will be
listed and you must select one by device name in another TALK command. A
terminal is not available for talking if it is gagged (i.e., the user has
used the TTY GAG command, or the program running at the terminal has gagged
it by UUO), if it is open in image mode, if it is holding output, or if it
is a display whose currently selected piece of paper is smaller than 15
lines high or is not activated. (Note to remote users: There is no operator
on this system; TALK CTY is not a good way to get assistance!) If the
command succeeds, all characters you type are typed out on the other
terminal, and vice versa. If the terminal you specify was already in a talk
ring, you are added to the ring; all characters typed at any terminal in the
ring appear on all the others. You leave the talk ring by typing CALL. You
need not be logged in to enter a talk ring.
If the argument to the TALK command contains the character @ or %, then it
is taken as an ARPA network user at a remote host. In this case, a program
is run to establish the talk connection, destroying your former core image.
Local talking does not affect your core image.
The KILL command can be used to kill another job. It takes the job number
and PPN (if different from your own) as arguments. The RESET command resets
the specified job, or your own job if no argument is given. (The KILL
command cannot be used to kill your own job; use the KJOB command for that.)
Needless to say, both of these commands are dangerous and should not be used
unless you are sure you want to affect another job's operation. They are
included to control runaway jobs which cannot be stopped normally, e.g.,
because they are detached. These commands can be given for any job by any
logged-in user. If the job's PPN does not match your own PPN, the command
is logged on the console terminal. Note: unlike the FINISH command, these
commands do not close (and preserve) files being written by the affected
job.
5 SYSTEM PROGRAM COMMANDS
The remaining monitor commands all run particular system programs in your
core image. There are a few main groups of these commands and a few
miscellaneous ones. These commands are documented along with the programs
they run. The next two sections are about the LOGIN and LOGOUT programs and
the commands which run them; these were briefly introduced earlier. The
major command groups are then presented, and finally the miscellaneous
system programs. Many system programs are not run by special monitor
commands, but by the R command. Those programs are not documented here, but
in separate manuals.
5.1 LOGIN
The LOGIN command is used to begin a session of using the computer. It runs
the LOGIN program, which provides several optional services as well as
setting up the necessary system tables for your job.
The LOGIN command may be abbreviated L. It takes one argument, a
project-programmer name. Different characters used between the two parts of
the name are used for different options:
PRJ,PRG types all system messages and processes OPTION.TXT (see below)
PRJ/PRG types system messages new since last login, processes
OPTION.TXT
PRJ.PRG types no messages, ignores OPTION.TXT; for fast login
PRJ%PRG sets new password, as explained below, then acts like PRJ/PRG
PRJ!PRG requires password even if at local terminal (see below); like
PRJ/PRG
The PRJ can be omitted, in which case project 1 is implied. If the
delimiter before the PRG is also omitted, 1/PRG is implied.
System messages are notices for all users, sent by the MAIL * command and
stored in the file NOTICE.TXT[2,2]. There may also be messages addressed
specifically to you. The handling of your personal mail is explained below.
Before typing any other messages, and regardless of the option used, LOGIN
will notify you if you have any other jobs logged in. If you have a
detached job logged in, you will be beeped. LOGIN will list the job number,
PPN, TTY, and job name of any job with your login programmer name.
It is possible to set a password and file protection codes to restrict
access to a particular PPN. If the PPN you specify to LOGIN has a password,
LOGIN types Password= and you must type the correct password to log in.
Echoing of input characters is turned off so the password does not print.
Passwords may be one to six letters or digits followed by RETURN. To
protect files from unauthorized access, there is a protection code
associated with each file. The code specifies the access allowed to the
file for its owner (i.e., a user logged in under the file's PPN), for other
authorized AI Lab users, and for guest users (those who are connected
remotely, from the ARPA network, dial-up telephone lines, or campus
terminals, and who are not logged in but are using the monitor commands
allowed without login). You can set the protection code for a file using
the COPY program (see Appendix 2). However, you must use the LOGIN program
to set the protection code of your file directory itself, and the default
protection code which is assigned to new files created in your directory if
the program writing the file does not specify a value explicitly. If you
use % as the delimiter between the project and programmer names when you log
in, LOGIN will give you the opportunity to change your password, the file
directory protection, and the default protection for new files. If you ask
to change your password, you will be asked to type the new password twice to
guard against typing errors, since the password will not be echoed. The
protection codes are entered as three-digit octal numbers, with the
following meanings:
Bit Meaning in directory protection code
400 password is for remote logins only (see below)
200 unused
100 owner may not write files
040 local users may not change protection of files
020 local users may not read directory or any files
010 local users may not write any files
004 guest users may not change protection of files
002 guest users may not read directory or any files
001 guest users may not write any files
Bit Meaning in file protection code
400 don't dump this file (see DART, Appendix 5)
200 delete protect (see COPY, Appendix 2)
100 owner may not overwrite this file
040 local users may not change protection of this file
020 local users may not read this file
010 local users may not overwrite this file
004 guest users may not change protection of this file
002 guest users may not read this file
001 guest users may not overwrite this file
Although there is a lot of complicated detail here about file protection,
please bear in mind that the system is not meant to be totally secure, and
that most users do not protect their files at all. The default directory
protection is 005, meaning that all logged-in users have read and write
access, and remote guest users have read access. Also, there are both
official (see the UNPROTECT command, page 53) and unofficial ways to get
around file protection. Protecting a file simply guards against
unintentional access and notifies polite users that you wish to keep the
file private.
When you log in with %, you can also add your directory to one of several
file access groups. Membership in such a group means that you want to allow
anyone with the corresponding file access privilege to have owner access to
your files, as if he or she were logged in under your PPN. For example,
there is a SYS group for system files; such directories as [SPL,SYS] (LPT
and XGP spooler files) are in the SYS access group, and the people in charge
of system programming have the SYS access privilege. This mechanism allows
users who work together on some project to share one another's files without
allowing other users access to them. File access privileges, like all
privileges, are assigned by system programmers. A special case is the MAS
(master) file access group. The MAS privilege is automatically assigned to
all PPNs with project name 1, but is effective only for access to
directories with the same programmer name. That is, if you have a directory
named [XYZ,PRG] and you give it the MAS access group attribute, you will
have owner access to it when logged in as [1,PRG] but user [1,ABC] will not
have owner access to it. This facility allows you to organize your files
into several directories, but still have owner access to all of them while
logged in under project 1. Remember that, although your project 1 PPN
automatically has the MAS privilege, you must explicitly enter your other
directories in the MAS access group for this facility to operate.
If the 400 bit is on in the protection code for a file directory, the
password associated with that area is used only for logins from a remote
site; no password will be required for local login on that PPN. (Note: if
you log in locally without a password, you will not be given any privileges
to which you would otherwise be entitled, including file group access
privileges. You can use the delimiter ! between your PRJ and PRG to force
LOGIN to ask for a password, to get your privileges.) Remote login is not
allowed on a PPN which does not have a password; thus, if you want to be
able to log in remotely but do not want to have to type a password for local
login, you can set the 400 bit in your directory's protection code.
Users with access to local terminals who sometimes need to log in remotely
can set a password (with %) for their own PPNs; remote users who want to
establish accounts here should communicate with Lester Earnest. (Type the
command MAIL LES.)
Sometimes you may find the system is in maintenance mode, which means that
the monitor is being debugged and the system is not available for normal
use. If you try to log in at such a time you will be asked for the
maintenance password.
The further details of LOGIN's operation are controlled by a file named
OPTION.TXT which you may have in your directory. If there is one, it is
searched for a line of the form
LOGIN:opt1,opt2,opt3;comments
where opt1...optn are the desired options. Spaces may be used in the
obvious places. Only the first six letters of an option name are read.
Upper or lower case is ok. Options may actually be divided over several
lines; it is the (required) semicolon which ends the option list. Several
other programs use this OPTION.TXT file, looking for their own option lines.
The LOGIN options are as follows:
NOMAIL Does not ask any questions about message files. This is for
people who like to type ahead while LOGIN is running. The
exact effect depends on what other options are used; see below.
XMAIL Prevents notification about a message file for you if the file
was last written by someone with your programmer name, unless
it was written by a program named MAIL. In other words, it
does not tell you about a message file which you have already
edited since the last new message for you.
MESSAG Types your mail without asking; see below.
NONOTE Prevents typing out system messages from NOTICE.TXT[2,2].
GRIPE Types out new gripes just like new system messages.
LOGRUN Runs the LOGRUN program, which executes monitor commands from a
LOGRUN entry in OPTION.TXT; see below for details.
INIT Runs the file INIT.DMP in your directory after login.
RUN=file Like INIT, but runs a program named explicitly in the option,
from default device SYS, e.g., RUN=LOGRUN is the same as
LOGRUN, and RUN=DSK:INIT is exactly like INIT (since DSK is
specified as the device, your own PPN is the default in this
case).
BEEP Enables the system feature of automatic beeping whenever your
job finishes doing something that took more than 15 seconds of
real time. Like ESC Z.
WHO If you are at a display, starts a WHO line. Like ESC W.
AUDIO=n Selects audio switch input channel n to your speaker if you are
at a display terminal. "n" is an octal number. "AUDIO=-n"
inhibits telephone paging interrupts, like BREAK n U. If n is
greater than 1000 octal, channel n-1000 is selected with beep
interruptions disabled.
GAG Tells the system not to allow other users to send messages to
your terminal or to link to you with the TALK command. Like
TTY GAG.
NOGAG Tells the system to allow other users to send messages to your
terminal or to link to you with the TALK command. Like
TTY GAG. This is the default.
RPGSAV Restores your TMPCOR files for remembered SNAIL commands from
your previous session using the computer. You must also have
the RPGSAV option specified for LOGOUT. This option will be
explained more fully in the LOGOUT section.
DM If you are not on a III or DD display, tells the system that
you are on a Datamedia (DM) display.
DM=n Just like DM option except that this specifies that your DM has
n lines (useful mostly on DM-simulating displays that provide
some number of display lines other than 24).
FDM Just like DM option if you are on a high-speed dialup line.
Ignored otherwise.
FDM=n Just like DM=n option if you are on a high-speed dialup line.
Ignored otherwise.
DM128 Like DM option but also tells the system that your DM can
display the control characters (octal 1 to 37) when they are
output preceded by an ascii escape character (octal 33).
DM128=n Like DM=n and DM128 options combined.
FDM128 Just like DM128 if you are on a high-speed dialup line.
Ignored otherwise.
FDM128=n Just like DM128=n if you are on a high-speed dialup line.
Ignored otherwise.
BOLD If you are on a DM display, tells the system to display your
line editor in boldface, assuming your DM has bold and blinking
interchanged like all SU-AI DMs. This is the default for DMs.
NOBOLD If you are on a DM display, tells the system not to display
your line editor in boldface/blinking (especially useful if
your DM does not have bold and blinking interchanged). This
option should occur after any DM, FDM, DM128, or FDM128 option,
if present.
BS If you are on a DM display, tells the system that your DM
displays the 177 character.
NOBS If you are on a DM display, tells the system that your DM does
not display the 177 character. If you are in DM128 mode, the
system will precede output of each 177 with an 033 to force the
177 to print. Otherwise, the system will convert echo or
output of backspace (177) to appear as a bold left-arrow.
BOW If you are at a Data Disc display, tells the system to display
piece of paper output in black on white (actually green on
white) instead of the reverse. Not very useful, since any
special display output will still be green on black.
NOBOW Display green on black. This is the default.
PORNO Try it and see.
DIGEST Tells you if there is a new Associated Press news digest that
came in after the last time you logged in and asks you if it
should type it out.
XDIGEST Always types the A.P. news digest if there is a new one since
you last logged in, without asking and independent of any other
option setting.
QMAINT Only type maintenance forecast if it has changed since last
login. Otherwise the maintenance forecast is always typed
unless . is used as the PPN delimiter.
ME Tells you your fortune.
COOKIE Alternate fortune cookie selection. See which you prefer.
HIDE Makes your Data Disc channel private, like ESC H.
UNHIDE Makes your Data Disc channel public, like BREAK H. This is the
default.
WIDTH=n If you are at a non-display, sets the maximum number of columns
for TTY output to the decimal value n, which should be between
16 and 256. Like TTY WIDTH n.
FULL If you are at a non-display, sets the full character set mode
switch. Like TTY FULL.
NOFULL If you are at a non-display, clears the full character set mode
switch. Like TTY NO FULL.
TABS If you are at a Datamedia or a non-display, clears the tab
expand bit; tabs will not be converted to spaces on output.
Like TTY TABS.
NOTABS If you are at a Datamedia or a non-display, sets the tab expand
bit; tabs will be converted to spaces on output. Like
TTY NO TABS.
FTABS If you are on a high speed dialup line, clears the tab expand
bit; tabs will not be converted to spaces on output. Like
TTY TABS.
FNOTABS If you are on a high speed dialup line, sets the tab expand
bit; tabs will be converted to spaces on output. Like
TTY NO TABS.
CONVERT If you are at a non-display, tells the system to convert
between SAIL and ASCII character codes, like TTY CONVERT. This
is the default.
NOCONVERTIf you are at a non-display, tells the system not to convert
between SAIL and ASCII character codes, like TTY NO CONVERT.
GLASS If you are at a non-display, tells the system to echo rubout as
backspace-space-backspace, like TTY GLASS.
NOGLASS If you are at a non-display, tells the system not to echo
rubout as backspace-space-backspace, like TTY NO GLASS. This
is the default.
FILL If you are at a non-display, sets the fill switch to insert
extra carriage returns on output to give the carriage time to
get all the way back. Like TTY FILL.
NOFILL If you are at a non-display, clears the fill switch thus
suppressing insertion of extra carriage returns on output.
Like TTY NO FILL.
ECHO If you are at a non-display, tells the monitor to send back to
your terminal the characters you type. Like TTY ECHO.
NOECHO If you are at a non-display, tells the monitor not to send back
to your terminal the characters you type. Like TTY NO ECHO.
ARROW If you are at a non-display, tells the monitor to type out
characters below octal 40 as uparrow-letter (e.g., ↑A) rather
than the character itself except for BEL (7), TAB (11), LF
(12), VT (13), FF (14), and CR (15). Like TTY ARROW.
NOARROW If you are at a non-display, tells the monitor to type out
characters below octal 40 as themselves instead of as uparrow
characters. Like TTY NO ARROW.
SYSTAT Types out a line indicating how many jobs are logged in and how
many are running, to give an idea of system load.
The options RUN, LOGRUN, INIT, PORNO, and COOKIE are mutually exclusive,
since they each tell LOGIN to transfer control to another program after the
login. If more than one appears in your OPTION.TXT, the one which is
earliest in the above sentence wins, e.g., RUN has highest precedence.
If there is a message addressed to you, LOGIN normally types
Message for YOU last written by PRG using PROGRM on dd-mon-yy at hhmm
Read it now?
where YOU is your programmer name, PRG is the programmer name of the last
user to write anything in your message file, PROGRM is the name of the
program used to do it, and dd-mon-yy and hhmm are the date and time it was
done.
If you type Y, the message file is printed, and you are allowed to delete it
(the whole file). If you type N, the message file is not printed. You can
also type R, which will treat your mail file like a system message file;
i.e., header lines will not be typed, and, if you used a slash in the
command, the only messages typed will be those which came since you last
logged in. However, R may not find the recently received messages correctly
if your mail file is in E format. If you type R, LOGIN does not give you a
chance to delete the file.
If you have the MESSAG option but not the NOMAIL option, then personal mail
is always typed out without asking first. If you have both MESSAG and
NOMAIL, the mail is typed but you are not given the chance to delete it. If
you have NOMAIL alone, you get the Message for YOU... line but not the mail
itself; many people use the NOMAIL option for LOGIN and run other programs
to read their mail. See the file E.ALS[UP,DOC] on the use of E as a good
way to process your mail; remote users may prefer to use RCV--see page 112.
If you have DIGEST and NOMAIL, you are notified of a new A.P. digest but it
is not typed out. (RCV will also do this for you.) It is also possible to
get automatic notification of incoming news stories on particular topics
from the NS program; these messages are treated like personal mail with
respect to MESSAG and NOMAIL.
The LOGRUN program looks for a line in your OPTION.TXT file starting with
LOGRUN:. It then takes that line, and all following lines until a semicolon
is seen, and makes them be executed as if you typed them in. (The semicolon
is required.)
5.2 LOGOUT
The command for terminating a session on the computer is KJOB (kill job),
which runs the LOGOUT program. The command may be abbreviated K. It takes
an optional switch argument to select various optional features. The
OPTION.TXT file is also used to control logout options.
The LOGOUT program normally types out several lines of accounting
information, e.g., computer time used. If you are not logged in elsewhere,
it deletes any files in your directory with extension RPG, as well as any
files of length zero with extension TMP; and if there are no files in your
directory, it deletes the directory itself.
If you have the RPGSAV option (see below), LOGOUT will look for TMPCOR files
(simulated files in core storage) used by SNAIL to remember COMPILE- and
EDIT-type commands, and save them on the disk. These TMPCOR files may exist
for different aliases you have used while logged in; all TMPCOR files with
names CM or ED, for any PPN, will be merged into files QSVCM.TMP and
QSVED.TMP in your login directory. If you also have the LOGIN:RPGSAV
option, these disk files will be copied back into TMPCOR when you next log
in, so SNAIL will remember your commands from one session to another. Note
that the /F switch for fast logout will prevent saving the TMPCOR files, and
that fast login (LOGIN PRJ.PRG) will not restore the disk files to TMPCOR.
Please bear in mind that if you often alias to different directories, and
you use the RPGSAV option, you can easily accumulate a lot of saved TMPCOR
files that you may no longer need. Since any job has a fixed quota of
TMPCOR files, you may run out. To avoid this, you should edit your
QSVCM.TMP and QSVED.TMP files from time to time, to eliminate unnecessary
entries. (Then log out /F so that your edits will not be overwritten by
LOGOUT!)
Note that if you have the RPGSAV option for LOGIN but not for LOGOUT, you
can create the QSVCM.TMP and QSVED.TMP files explicitly (create them /N--no
directory--if you use E) to have a permanent set of remembered commands.
Each file must contain one line per alias, containing the PPN (without
brackets), a tab, and then the compile- or edit-type command.
This normal processing can be affected by switches in the command itself or
by options in the OPTION.TXT file. LOGOUT looks for a line in OPTION.TXT of
the form
LOGOUT:RPGSAV,ME,FAST;
(Of course, you need not use all the options.) These options, if found,
have the following effect:
RPGSAV Don't delete .RPG files, and save TMPCOR files on disk.
ME Type a friendly message (try it).
FAST Just log out, don't delete anything, don't save TMPCOR, don't
print statistics.
Switches are single letters preceded by a slash (e.g., KJOB/F). The
switches are:
/K Kill .RPG files (only necessary if you have the RPGSAV option).
/S Save .RPG files.
/M Type a message, like the ME option.
/F Fast logout.
/Z Zero the disk. Deletes all your files, after asking if you
really mean it.
Certain functions of LOGOUT are performed regardless of options or switches
used. You are told if you have another job logged in with the same PPN, and
if you have assigned any private devices (mag tape, etc.), you are reminded
to unload them. The "date last written" entry for your file directory is
updated to reflect your most recent logout (this information is used by
FINGER). If you are not logged in elsewhere, and you have a file named
LOGOUT.MSG, it is typed and deleted.
There are two other monitor commands which run the LOGOUT program, for
logging in with another PPN, and for attaching to an existing job (see the
ATTACH command, Section 4.4.) They are
KLOG logout-switches ppn
KATTACH jobnum ppn logout-switches
The logout switches are as described above. The other arguments are in the
required form for the LOGIN and ATTACH commands.
Finally, there is a LOGOUT command, which is exactly the same as KJOB but no
arguments are allowed.
Any of these commands, when typed at a PTY which is not owned by a TELNET
server (that is, not the virtual terminal of an ARPA network user), simply
kills the job without running the LOGOUT program. This has approximately
the effect of KJOB/F.
5.3 SNAIL
The SNAIL commands run the SNAIL program, which then runs various other
programs. The commands are divided into three basic groups. The first, for
text file editing, take a file specifier as argument:
CREATE create a file with SOS
EDIT edit a file with SOS
MAKE create a file with TECO
TECO edit a file with TECO
The other major editor, E, includes the necessary code to carry out the
SNAIL functions itself, e.g., default extensions and remembering the
commands. The following commands are, therefore, not strictly SNAIL
commands but function equivalently:
CETV create a file with E
ETV edit a file with E
EREAD edit a file with E in read-only mode
READ edit a system documentation file with E
BOOK edit with E in book mode
The second group, for program compilation, take one or more program names or
a command string, along with various option switches:
COMPILE compile programs
LOAD compile and load programs
EXECUTE compile, load, and run programs
PREPARE compile and load with a debugger
DEBUG compile, load with a debugger, and start the debugger
TRY compile, load with a debugger, and start the program
PUB produce a document with the PUB document compiler
POX produce a document with the POX document compiler
RER run a system program and give it a command string
RERUN run a user program and give it a command string
PROCESS pass a command string to the monitor
Finally, one more command, used in conjunction with the compile-type
commands, which takes no arguments:
CREF produce cross-reference listings from compilations
The complete description of these commands, with the command syntax and the
processing options provided, is included as Appendix 1.
5.4 COPY and SPOOL
The next major group of commands runs the COPY program. Their arguments are
generally in the form "new-file ← old-file":
COPY copy a file
TRANSFER copy and delete the original
RENAME rename a file or change protection
The following COPY commands imply a destination, and take just one or more
input file specifications (separated by commas if more than one):
DELETE delete a file
TYPE copy to the terminal
LIST copy to the line printer (SPOOL, below, is preferred)
PRINT copy to the line printer, different format options
XGPLIST copy to the Xerox Graphics Printer (XSPOOL is preferred)
DIRECTORYtype file directory
The COPY manual explains these commands fully, along with various options
specified in the argument list; see Appendix 2.
Since only one job can use the line printer or XGP at a time, if several
people want to make listings at once there is a scheduling problem. To
solve this, the system allows listing requests to be stored on disk, and
processed one at a time by spoolers which actually control the LPT and XGP.
The system commands for this function are:
SPOOL request line printer listing of specified file(s)
XSPOOL request XGP listing of specified file(s)
UNSPOOL delete a spooler request
QSPOOL display spooler status and queues
The SPOOL commands also allow editing options to be specified in the
argument list; see Appendix 3 for details.
The commands in this section all require that you be logged in, except for
TYPE, DIRECTORY, and QSPOOL.
5.5 MAIL
Several commands are provided for sending messages to other users. Messages
can be filed on disk, so that the addressee will be notified about them by
LOGIN, or they can be sent directly to the terminal of a logged-in user.
There is also an automatic reminder system which allows messages to be sent
or programs to be run at a later time. The commands used for these purposes
are:
MAIL send a message to one or more message files
SEND send a message to the terminals of one or more users
GRIPE send a message complaining about a system problem
REMIND schedule a message to be sent at some later time
PLAN create a file describing how to find you when not logged in
EVENT send a message to all users about an event on a given date
BATCH schedule the execution of a command string at some later time
LATER schedule the execution of a given program at some later time
RETRY send any messages which were queued by earlier failing operations
ETV ∂ edit E-format message file
RCV edit non-E-format message file
CANCEL delete REMIND, BATCH, or LATER requests or queued mail
The usual format of the MAIL and SEND commands is
MAIL user message
SEND user message
where user is a programmer name and message is the one-line text you want
sent. If you do not include a message in the command, the MAIL program will
ask you to type a message, which may then have more than one line. The
complete description of these commands is in Appendix 4.
The commands in this section require that you be logged in, except for MAIL,
SEND, GRIPE, and RCV.
5.6 DART
DART is a program to save disk files on magnetic tape and restore them as
needed. It also handles mag tape positioning commands. The file dumping
commands take disk file names as arguments:
DUMP dump disk files onto tape
RESTORE restore files from tape to disk
PUMPKIN Ask the Great Pumpkin to restore your files later
LOCATE find which tape has dumped copy of files
TLIST list all files on a tape
TURKEY tell who last used a given DART tape
The tape positioning commands are:
REWIND
ADVANCE
BACKSPACE
EOT
The complete documentation of these commands is in Appendix 5 of this
manual.
5.7 DO
The DO program allows automatic execution of an arbitrary sequence of
commands. By writing DO command files, you can make your own sequences of
program execution analogous to the SNAIL compiler-loader-execution sequence.
The DO command takes a file specifier as argument, with the default
extension being .DO. The text in the file is simply transferred into your
terminal's input buffer, as if you had typed it. Then the DO program exits,
and the monitor processes the commands that came from the file. The DO
program cannot be run by detached jobs. The amount of text allowed in the
DO file is limited by the capacity of your input buffer (currently 95
characters, plus one extra line of up to 160 characters on display
terminals). You can sometimes circumvent this limitation by the following
trick: if the command string to be processed by DO ever leaves you at
monitor command level, you can insert at that point in the string a DO
command to process another file (or another function in the same file--see
"|" character below); the DO command must appear as the last thing in the
string--subsequent commands should then appear in the next DO file. This
trick can be repeated any number of times--simply make the last command in
each DO file be a DO command to reference the next file.
DO does some conversion of certain characters in the file, to allow things
like CONTROL and META characters. The characters which are processed
specially are:
RETURN ignored
LINE ignored
↔ translated to RETURN followed by LINE
↓ translated to LINE
≠ translated to ALT
λ translated to deferred CALL (one ↑C)
VT adds CONTROL bit to the following character
α adds CONTROL bit to the following character
FORM adds META bit to the following character
β adds META bit to the following character
⊗ translated to ESC
⊗- translated to BREAK
| separates different DO functions (see below)
≡ quote the next character (do not process it specially)
? takes the next character (other than RETURN or LINE) as a
variable name. Suppose the character is A (i.e., ?A). If this
is the first occurrence of ?A in the file, DO types out
"A= " and waits for you to type in a text string ending
with RETURN. This string is substituted for every occurrence
of ?A in the file.
To allow more than one DO function to be stored in the same file (because
small files are inefficient in using disk space), the vertical bar (|)
character can be used as a separator. The command
DO DOFILE(3)
will DO the commands between the second and third | characters in the file.
The DO command remembers its argument in a TMPCOR file, so you can type DO
without an argument to repeat the same command file. Also, the DO command
is remembered as if it were a COMPILE-type SNAIL command, so the SNAIL exit
mode commands in the text editors will also repeat the DO command. Thus,
users of languages like LISP which are not recognized by SNAIL can write DO
files to run LISP and read in their program.
The DO program ignores E directory pages and FORM characters found in
E-format files.
5.8 ZERO
The ZERO command is used to initialize file directories on disk or DECtape.
The command takes a device name as argument; the device must be DSK, DTAn,
or UDP (user disk pack). If you do not type the word ZERO in full, it will
not accept the device name on the command line, and will ask for it later.
This is a safety feature in case you mistype some other abbreviated command.
For DECtape, ZERO simply executes the UTPCLR UUO, which tells the monitor to
initialize the file directory for the DECtape unit you specified. Make sure
you don't get the wrong unit number and zero someone else's DECtape!
If you specify device DSK, you must confirm (by typing Y) that you want to
delete all the files in your disk area. ZERO then attempts to delete each
file in your area. For each file, it types # if successful, otherwise a
message indicating the reason for the failure (write protected, etc.). You
cannot use the ZERO DSK command if you are aliased.
The ZERO program is not used for new format (file structured) UDPs. It can
be used to change the password of an old format UDP, and also allows the
initialization on such a UDP of the file structure formerly used by the COPY
program, although this feature is now obsolete. The UFD command (see page
53) is used to set passwords and create file directories on new format
UDPs.
5.9 WHO
The WHO command (abbreviated W) runs the WHO program, which displays system
status information at your terminal. If you are at a display terminal, the
information is automatically updated as long as the program continues to
run. If you are at a non-display, the information is only typed once. The
WHO command does not require that you be logged in. WHO accepts various
commands, described later, to control what information is presented.
The first part of the WHO display is a list of the jobs on the system, with
various information about each job. This list is divided into two sections,
for jobs belonging to users and for system phantom jobs. (More precisely,
the second section contains jobs which are detached and have the JLOG bit
off in the job status word, i.e., are not logged in.) Jobs attached to
pseudo-teletypes are listed under the controlling job, with the line for the
controlled job indented. The listing for each job has several parts:
JOB job number
QUEUE queue name, as in the WHO line, with possibly an extra
character indicating one of several states (if more than one
applies, the one which comes first in this list is displayed):
← the job needs to be swapped in, e.g., for a monitor command
- the job is now actually running
⊗ the job is locked in core
→ the job's upper segment is next in line to swap in
↑ the job is next in line to be swapped out
↓ the job is next in line to be swapped in
* the job is swapped out
PPN the job's logged-in PPN ("100100" for not-logged-in WHOs, etc.)
LINE the job's terminal line number, or DET for detached jobs
JOBNAM the job name
SIZE the job's core image size in 512-word pages
TIME the job's total run time since login
PL percentage of CPU time spent on this job recently
SL service level reservation for this programmer
SEG job number of this job's upper segment
SW1 number of ticks between startups of job's KL-10 spacewar module
SW2 number of ticks between startups of job's KA-10 spacewar module
ALIAS the job's ALIAS PPN
If a job has an alias and is not running a spacewar module on either
processor, a dot (.) will appear in the area used for indicating spacewar
modules, to help the viewer line up the alias with the proper job line.
After the job display comes a display for upper segments, containing the job
number (possibly followed by one of the above single-character markers), the
letter W if the segment is not write protected, the job name, core size, and
number of jobs using the segment.
The next part of the WHO display is a summary of overall system statistics.
This includes the time since the system was last restarted (Up Time); short
and long term time spent running the null job (Null Time); short and long
term time spent running the null job when another job wanted to be run but
wasn't in core (Wasted); the number of jobs waiting to access the disk (Disk
Queue); total user core image sizes in core and swapped out (Core); the
total available user core not used by locked-in jobs, and the total
available user core (Usable); the number of jobs in RUNQ and TQ and their
combined core image size (Running Jobs); and the total service level
reservation for logged-in users (Total Slevel).
The final section of the WHO display is a list of all I/O devices in use by
programs or assigned by jobs. For each such use of a device (most devices
can only have one at a time), a line is displayed containing the logical
name, if any; the physical name; the character "#" if the device was
assigned by the ASSIGN command; the job number using the device; if a
particular file is open, the file name, extension, and directory ppn (for
disk files), the number of records in the file, the record currently being
read or written, and the read/write status. This last will be W if the file
is open for output, R for input, or RA for read/alter mode, followed by E if
the end of file has been read. Note: if the file has been closed, there may
be no mode flag, and a large number like 1101 in the current-record
position. Record numbers are displayed in octal.
WHO commands
WHO accepts commands to determine what information is to be presented.
These are single-character commands, and should not be followed by carriage
return. However, some of the commands must be followed by an argument,
which is ended with carriage return; ending such an argument with alt mode
will abort the command. WHO commands may be included on the monitor command
line which starts the WHO program running, or can be typed separately while
the program is running (the latter on display terminals only). Only one WHO
command which takes an argument can be included on the monitor command line,
and it must be the last thing on the line.
On display terminals, only part of the information can fit on the screen at
a given time. Certain commands provide "scrolling" of the display up or
down; these commands are ignored on non-displays.
The available commands are listed in the table below. Other characters will
be ignored in a monitor command line, but will make WHO clear the screen and
exit if typed while WHO is running on a display. If no command is typed to
a WHO running on a display for two minutes, WHO will exit, unless the ∞
command has been given. After WHO exits, typing CONTINUE to the monitor
will tell WHO to continue presenting the same information it had been
presenting when it exited.
The following commands apply only to display terminals:
↑ (or ;) scroll up 1/2 screen
↓ (or :) scroll down 1/2 screen
FORM (formfeed) scroll up whole screen
VT (vertical tab) scroll down whole screen
0-9 repeat argument for ↑ ; ↓ : FORM VT
∞ run forever (otherwise WHO exits after nothing has been typed
in for two minutes)
U Update screen. Used only for Datamedia terminals, for which
WHO normally rewrites only the information which has changed
since the last display. This command forces a complete
redrawing of the display.
E Exit, leaving information displayed on the screen and with the
page printer set up to avoid erasing it
The following commands apply both to displays and to non-displays:
R only display jobs which have recently been Running (not in
NULQ, STOP, IOWQ, or INTW)
N restore Normal display (all jobs)
T Type out the job information only (not system statistics or
file information). On a display, exit after typing the
information once.
F Like T, but type File information also.
Q Type once only a Quick display of jobs which are not detached,
typing only their PPNs and TTY numbers.
M V * " + - @ These seven commands allow you to specify which jobs
should be displayed. These are explained below.
WHO keeps two special tables of job specifications for deciding which jobs
it will display; these tables are called the PLUS table and the MINUS table.
Jobs specified by the MINUS table will not be displayed (regardless of other
conditions). The PLUS table is ignored if empty; but if it is non-empty,
then only jobs specified by the PLUS table are displayed; however, jobs
specified by both tables will NOT be displayed, since the MINUS table has
priority. Both tables are initially empty, and the R and N commands reset
both tables to empty. Jobs can be specified in these tables by project
name, programmer name, project-programmer name, job number, and job name.
Each of the commands * + - " @ takes an argument which should be ended with
a carriage return; if an argument is ended with an altmode, the command will
be aborted. WHO will beep you if an argument is not accepted (illegal
argument or aborted with altmode). The commands M and V take no argument.
The argument to @ is a filename, the argument to " is a job name, and the
argument to each of the commands * + - is a job specification which can be
any of the following forms:
PRG programmer name (letters and digits only)
,PRG programmer name (letters and digits only)
PRJ, project name (letters and digits only)
PRJ,PRG project-programmer name (letters & digits only)
NUMBER a decimal job number less than 64 (digits only)
"NAME a job name (any sixbit characters after ")
A job will match specifications of the first four types if either its
logged-in PPN or its ALIAS PPN matches the specification. Any job running
on a PTY owned by a job being displayed will also be displayed, unless the
job on the PTY matches a specification in the MINUS table. If a job running
on a PTY is displayed and its controlling job is not displayed, then the job
on the PTY will be indented using dots (.) instead of spaces (which would be
used if the controlling job were being displayed).
The seven individual commands are described below.
M only display jobs matching your logged-in programmer name or
your ALIAS programmer name (clears both tables and then puts
your logged-in programmer name and your ALIAS programmer name
into PLUS table)
V only display jobs belonging to volleyball players (simulates an
@VB.DIS[P,DOC]--see @ below)
*<spec> only display jobs matching the specification <spec> (clears
both tables and then puts <spec> into PLUS table)
+<spec> also display jobs matching <spec> except those matching entries
in MINUS table (adds <spec> to PLUS table and removes <spec>
from MINUS table); leave running-jobs-only mode.
-<spec> don't display jobs matching <spec> (adds <spec> to MINUS table
and removes it from PLUS table)
"<name> only display jobs with the job name <name> (clears both tables
and then puts <name> into PLUS table)
@<file> clear PLUS and MINUS tables and then put job specifications
from the file <file> into the tables. E directory pages and
SOS line numbers are permitted and ignored. The default
extension .DIS is used if no extension is typed. If no PPN is
typed, the disk area [P,DOC] is tried first, then your own disk
area, to find the file.
While reading from a file, spaces are ignored (except in a job name). A
semicolon not in a job name causes the rest of the line to be ignored.
Non-SIXBIT characters (except lower-case letters, which are converted to
upper case) are treated like CRLFs.
An entry in the file can be any of the forms listed below, and should be
terminated by a comma or a CRLF. Note however that a comma (or any other
sixbit character including semicolon and space) appearing as one of the
first 6 characters of a job name will be taken as part of the job name.
+<specx> Add the specification <specx> to PLUS table.
<specx> Add the specification <specx> to PLUS table.
-<specx> Add the specification <specx> to MINUS table.
Unless all entries in the file are of the form -<specx>, WHO leaves
running-jobs-only (R) mode. A job specification in a file, <specx>, can be
any of the following forms (note that these are slightly different from the
forms for <spec> that you can type in):
PRG programmer name
[PRG] programmer name
[,PRG] programmer name
[PRJ,] project name
[PRJ,PRG]project-programmer name
"NAME job name. After the " the first 6 characters (or less if
terminated by a CRLF) are taken as a job name. Then characters
are skipped until a comma or CRLF is seen.
Note that you cannot specify a job number from a file.
If WHO is started with the REENTER command, it makes a listing of its
information display on the line printer. The information printed will be
controlled by the WHO commands in effect when WHO last exited, if any.
Finally, the command WHO user%host (user is optional) types once only a
WHO-like status report on the specified user, or all users if none
specified, at the given ARPA network host. The exact format of the report
depends on the host selected.
5.10 FIND
The FIND command is used to locate information in a file by searching for a
keyword and typing out the "paragraph" in the file containing the key. The
main use of this program is to look people up in the AI Lab telephone
directory. FIND may be run without logging in first.
FIND [EXACTLY] [WITHIN <delim>] [EXACTLY] <key> [[IN] <file>]
where square brackets [] indicate optional elements, <key> is the string of
characters to be found in the file <file>, and <delim> is either a single
character or one of the following words: MSG LINE PAGE PARAGRAPH GRAF.
If <key> contains any spaces or tabs, it must be separated from the filename
<file> (if present) with the word IN, or delimited by double quotes (") or
left and right single quotes (` and '). The left and right quote characters
(` and ') may appear in the key when double quotes surround the key, and
double quote and left single quote characters (" and `) may appear in the
key when left and right single quotes surround the key. If the number of
spaces and tabs in the key is significant (in EXACTLY mode), the quoted form
must be used; note however that quotes do not imply EXACTLY.
The EXACTLY qualification (which, as indicated by the syntax above, may
occur either before or after any WITHIN phrase) causes FIND to search for an
exact match. Otherwise FIND performs a template match. A template match
recognizes two special symbols in the key: space (one or more consecutive
spaces or tabs in the key) and ellipsis (three or more consecutive dots). A
space in the key matches zero or more spaces, tabs, and CRLFs in the unit
being searched. An ellipsis in the key matches zero or more arbitrary
characters in the unit being searched. Furthermore, in a template match,
upper and lower case letters are equated. The EXACTLY search is somewhat
quicker and requires that the unit searched (see the WITHIN phrase below)
contain the key exactly as given.
The WITHIN <delim> phrase allows specification of the delimiter that
determines the amount of text searched as a unit and typed out when a key is
found. The default typeout is a PARAGRAPH except when the partial-sign mail
filename specifier is used, in which case MSG is the default. To specify
some other quantity, use the WITHIN phrase in the command (see the syntax
above). The text typed out will be that delimited by <delim> at the
beginning and at the end. The delimiter <delim> can be specified as a
single character or it can be specified by one of the following exact names:
MSG LINE PAGE PARAGRAPH GRAF
where MSG means that partial sign (∂) is the delimiter (designed for use
with mail files), LINE means that the end of a line is the delimiter (i.e.,
only the line on which the key is found will be typed), PAGE means that
formfeed (a pagemark) is the delimiter, and PARAGRAPH or GRAF means that a
blank line is the delimiter.
The delimiter character will be treated as a delimiter only if it occurs as
the first character on a line; a line starting with the delimiter character
is considered the first line in a new text unit, and the previous line is
the last line in the previous text unit.
Each separate text unit containing the key is a hit and is typed out, with
each line of text preceded by an asterisk (*) except that the line in which
the key occurs is preceded by a greater-than sign (>). Also, the hits are
counted and the count is printed after the whole file has been searched.
Within a single delimited text unit, up to about 25 lines can occur both
before and after the line in which the key is found. If more than about 25
lines occur before and/or after the key but within the delimited text area,
an ellipsis (. . .) will be typed out before the first line typed out and/or
after the last line typed out.
The default file to be searched is the A.I. Lab phone directory. However,
if you have an OPTION.TXT file in your alias directory with a line beginning
FIND:, then the default file searched will be that named after the FIND:.
The default file is used unless you specify a filename in your command, in
which case the specified file is searched. If you have a FIND:<file> entry
in your OPTION.TXT file, you can still have the phone directory searched
without typing its exact name by using the filename PHONE in your command.
The FIND program tries to be as clever as possible about deciding what is or
is not a filename. For example, the command
FIND LARRY TESLER
will look for the string "LARRY" in the file TESLER if you have such a file
in your directory, but will look for "LARRY TESLER" in the default file if
you do not have a file TESLER. However, this rule is applied only if the
key ("LARRY") is only one word; otherwise, the key must be quoted or
delimited with IN if a file is also specified.
The filename given can use the partial sign (∂) to specify a mail file
(prg.MSG[2,2]). The partial sign can optionally be followed by any
combination of a programmer name to specify one other than your own; an
asterisk (*) to specify the system message mail file NOTICE.TXT; an
extension to specify one other than .MSG; and a PPN to specify one other
than [2,2]. When a partial-sign filename specification is used, the default
amount of text to be searched and typed out as a unit (see the WITHIN phrase
above) is one message, that is, all text between line-starting partial signs
in the searched file; this can be overridden using the WITHIN <delim>
phrase.
For instance, the command
FIND garply baz in ∂
will search your own mail file for "garply baz" and type out the entire
message(s) it occurs in. The command
FIND EXACTLY " ME" in ∂*
(that's "<tab>ME") will find all system messages (in NOTICE.TXT[2,2]) from
ME. The command
FIND EXACTLY " ME" in ∂bh
(again that's "<tab>ME") will find all messages sent to BH by ME, and the
command
FIND president in ∂.nap
will search your own News Service notification file on [2,2] for all
notifications containing "president".
More example commands:
FIND EXACTLY JMC
FIND MCCARTHY
FIND TARGET IN COMLIN.FAI
FIND TARGET COMLIN.FAI
FIND "TEMPLATE ... TARGET" COMLIN.FAI
FIND TARGET BYTE IN COMLIN.FAI
FIND `LOMA VERDE'
FIND EVENT IN ∂*
FIND EXACTLY " E " IN ∂*
FIND WITHIN GRAF EXACTLY Help IN ∂
FIND WITHIN ∂ HAND-EYE IN SAVED.MSG
FIND WITHIN MSG PDP-11 IN OUTGO.MSG
FIND WITHIN PAGE UDPUFD IN MONCOM.BH[S,DOC
FIND EXACTLY WITHIN LINE Foo IN FILE1
FIND john...lathrop
Example output for the last example command above:
*McCarthy, John (Prof. John) 207 74430 45 P[FR*/VB,JMC] 2 1600
> 846 Lathrop Dr., Stanford,94305, (9) 321-7580 β Sep 4
1 HIT ON KEY = john...lathrop
The EFIND command runs the EFIND program, which is similar to FIND in
purpose, but works only on E-formatted files (i.e., files prepared with the
editor E) in which the entries are sorted and are WITHIN PAGE. If your file
meets these format restrictions, it runs faster than FIND. The program is
documented in the file EFIND.RSP[UP,DOC].
5.11 Other System Information Programs
This section describes other commands which run information programs. All
of them except DSKSIZ are allowed to be run without logging in.
The WHERE command types out information similar to WHO for jobs belonging to
a particular user. It takes a PPN or programmer name as argument, and for
each job whose login or alias PPN matches the argument types out the job
number, PPN, job name, core size, queue, total run time, idle time (real
time since last run), terminal, and alias if any. If the job is logged in
over the ARPA network, the host from which the connection was made is also
shown. (The terminal is listed by type and unit number, e.g., TTY5, III63,
DD66, PTY161. Note that these are not actual physical device names
recognized by the system, except for TTYn.) If no argument is given, all
jobs will be listed.
If you are logged in and run WHERE, you can give the REENTER command and
type in a job name. WHERE will then list all jobs with that job name.
The FINGER command also lists jobs belonging to a particular programmer, but
provides different information: the job number and job name, the programmer
name, the real name of that programmer if known to the system, the number of
minutes since the job was last run (followed by a dot if the job is
stopped), the terminal number (and type, as in WHERE), and the actual
location of the terminal (room number, if in the lab, and whose office it
is). Unlike WHERE, for a Data Disc terminal FINGER shows the number of the
physical terminal responsible for the line, not the TTY line number. The
number will be shown in the form TV-n if the physical terminal screen is
looking at the line belonging to that job, or as tv-n (lower case letters)
if not. In other words, if the same physical terminal is responsible for
more than one line, only the one which it's watching at the moment FINGER
runs will be in upper case. If another number is shown, following the idle
time, it is the number of additional Data Disc channels used by the job.
If more than one physical terminal is tied to the same Data Disc line,
FINGER will show all of them; the normal output for the job controlled by
that line will be followed by one or more lines containing only the terminal
information (no job name, number, etc.); if the line is hidden, and someone
has tied to it by overriding the hiding, then the line typed for physical
terminals other than the responsible one will say
*** SPY *** SPY *** SPY ***.
FINGER with no arguments displays all jobs which are logged in. If the
programmer specified as the argument to FINGER is not logged in, the program
types the date and time of his last logout. Also, if he has created a plan
file (with the PLAN command, Appendix 4) it is typed. Typing -LOGOUT or
-PLAN (abbreviated -L or -P) will eliminate the logout time or the plan
file. FINGER will accept human being names as arguments instead of
programmer names, if desired.
If more than one name is given as argument (separated by spaces or commas),
FINGER will report on all the selected users. In this case, the default is
not to give the logout time or plan file; /LOGOUT or /PLAN may be used to
ask for it. An argument of the form &file will look for names in the
specified file, with default extension null or .DIS and PPN your own or
[P,DOC]; FINGER &VB will look for VB[your alias], VB.DIS[your alias], and
VB.DIS[P,DOC] in that order.
If the argument to FINGER is of the form user@host or user%host, then FINGER
will show similar information about the specified user (or all logged-in
users if none is given) at the specified ARPA network host. Not all hosts
support this FINGER protocol. The form @* will show the FINGER display for
all cooperating hosts.
The WHEN command tells you the time of last logout for one or more users,
and whether or not they are now logged in. Arguments can be programmer
names or PPNs (without brackets), and are separated by semicolons. For
example, WHEN DON;S,SYS;*,JMC will report on the last logout for any of
DON's PPNs, for the specific PPN [S,SYS], and for each of JMC's PPNs
separately.
The HELP command provides information about system programs and facilities.
It takes as its argument the name of some program or concept, and provides
some short description of that facility, if such a description exists. The
data for HELP comes from the [3,2] directory; this data consists mostly of
short text files which are typed by HELP, but may also include programs or
monitor commands which HELP will run for you. If no HELP is available, but
there is a longer document available in one of the standard documentation
file directories, HELP will so inform you. If you type HELP with no
argument, the program will list the topics on which HELP is available.
(Some of the HELPers which run programs rather than just typing text at you
require that you be logged in. HELP LOGIN is cleverly not among those.)
The DSKSIZ command reports how much disk you are using and what your disk
allocation is. The command takes a programmer name as argument; no argument
means your login PRG. The programmer name may optionally be preceded by a
device name. The program types your allocation and the size of all your
file directories and the size of the files you are using on the area [2,2].
Finally, it tells you whether you are under allocation or not and by how
much.
The switch /F will suppress most of the typeout. The /V switch (Verbose
mode) will start by asking if you would like to record the information
provided in a disk file PURGE.DAT for later reference, and if the user is
over quota, offers to write in a file named PURDAT a list of the files the
purger would choose to purge.
Each line of DSKSIZ output is in the following format:
[PRJ,PRG] n Files. t T. w DW. p% Date
This means that directory PRJ,PRG has n files occupying t disk tracks and w
disk words (each track is 2334. words) with a storage efficiency of p%.
Date is the date of the most recently written file in the area.
The SYSTAT command runs the WHO program (see Section 5.9). The old SYSTAT
program is no longer supported on this system, but the command name was
retained for compatibility with other systems.
5.12 Miscellaneous System Programs
The commands in this section run miscellaneous system programs. Except as
noted below, they require that you be logged in.
RSL runs the RSL program, which is used to reserve service level (i.e.,
better service). The command takes no arguments. The meaning of service
level and the use of RSL are described in Appendix 6.
The LISP command runs the MACLSP interpreter. It takes no arguments.
The FIXIMLAC command is used to initialize IMLAC terminals. (These are
terminals which are treated as Datamedias by the monitor, but are actually
small computers with display screens.) With any luck, you will never see an
IMLAC. Just in case, the command is explained in Appendix 7. This command
may be given when not logged in.
The TELNET and TN commands (TN is used to abbreviate TELNET) run the TELNET
program, for talking to another computer on the ARPA network. The host name
of the computer you want to use is the argument. The OTN command is used
for a TELNET connection using the obsolescent "old" protocol. The DTN
command runs a version of TELNET which simulates a Datamedia terminal.
The SUPDUP command (abbreviated SD) provides a TELNET-like connection to the
ITS systems at MIT, but using special protocols for effective text display,
as though the user were at a local ITS display terminal.
The FTP command takes an ARPA host name like TELNET, but runs the FTP
program to carry out the File Transfer Protocol for copying files between
computers.
Further details on TELNET, SUPDUP, FTP, and the ARPA net in general is
contained in Appendix 8 of this manual.
It is possible to establish TELNET-like connections to remote computers by
using dial-up connections via the dataphones normally used for incoming
dial-up lines. The dataphone on TTY11 includes an automatic dialing
circuit. The DIAL command will establish an outgoing dataphone connection
and thereafter behave like a TELNET. The dial command takes as its argument
either the device name of a TTY (the word TIP means TTY24, which is a line
connected as a port of the SU-TIP), in which case you must dial the number
you want manually on the associated dataphone, or a telephone number in the
form
{(ddd)}ddd{-}dddd
where d represents a digit and braces enclose optional characters. In the
latter case, the telephone number is dialed automatically on TTY11's
dataphone. In either case, you may add the switches /110, /150, or /300
(abbreviated /1, /5, or /3) to specify the speed of the connection. The
default is 300 baud.
The NS command runs the News Service program, which allows access to news
stories which have been received from the Associated Press and New York
Times news wires. The HOT command runs the HOT program, which types AP and
NYT stories as they come in. These commands are restricted to local users
at the request of the Associated Press. Full documentation on the news
service is contained in the file NS.ME[S,DOC].
The UFD command and the UDPUFD command run the UFD program, which is used to
create or delete user file directories on the system disk or on
file-structured user disk packs. The difference between the two commands is
that UFD has default device DSK, whereas UDPUFD will use whichever UDP is
available to your job, if unique. The command format is UFD DEV:PRJ,PRG.
To create a new directory, you must know the pack password; to change or
delete a directory you must know its password. (You can create a new
directory on the system disk with the same programmer name you are logged in
under; this is the only way for remote users to create new directories.) You
can change the directory's password or file protection codes with UFD as you
can for the main file disk with LOGIN (see Section 5.1). You can delete a
directory only if it is empty.
The UNPROTECT command allows any logged-in user to change the protection of
any file on the disk to 005, which allows any logged-in user access to the
file. The use of the command is logged on the console terminal and in the
file UNPROT.LOG[1,2], which is otherwise not writeable and cannot itself be
unprotected. The command is intended as a last-resort emergency technique
for legitimate access to protected files, and its misuse is a serious
offense. User file directories cannot be unprotected, and a protected
directory will prevent access to any of the files in it. The argument to
the command is the file to be unprotected.
The UNDELETE command can be used to try to recover a file which has been
deleted accidentally. The format is UNDELETE newfile←oldfile where oldfile
is the one which was deleted and newfile is the name under which the
recovered version will be written. The file can be recovered only if the
disk space it occupied has not yet been reassigned to another file, so if
you accidentally delete a file you should try this right away. A file which
can't be recovered this way may be recoverable from the backup tapes which
are made daily, using the DART program (Appendix 5).
The DRD command (not related to the Department of Redundancy Department)
runs the DIRED program, for displaying and manipulating file directories at
a display terminal. See the file DIRED.SGK[UP,DOC] for instructions.
The @ command runs the @ (ATSIGN) program, which can be used to produce
cross-reference program listings for XGP output. It also allows for
incremental listings when a program is modified. The documentation for @ is
in the file ATSIGN.RMS[UP,DOC].
The DECIDE command can be used to help make difficult programming decisions.
For example:
DECIDE SHOULD I GO TO LOUIE'S FOR DINNER TONIGHT?
The TEST command runs the system program TEST, if any, which is used for
testing new system features and programs.
6 PRIVILEGED COMMANDS
Certain command functions can only be used by privileged users. (There are
several privileges which may be associated with a PPN.) Most privileged
functions are carried out by programs and are documented with those
programs, but a few monitor commands themselves take on special meanings
when used in a privileged way. Most users do not require any privileges; if
you think you need to be assigned any, see a system programmer, who will
disagree.
The DETACH command, if given with a device name argument by a user with the
DEV privilege, makes the specified device unavailable to users. This is
intended to be used for hardware maintenance. The ATTACH command with
device name argument, also privileged, assigns a detached device to the job
giving the command; it becomes generally available when the job deassigns
it. These commands also accept pseudo-device names of the form DDn, to make
Data Disc channel n unavailable. (A detached Data Disc channel can still be
used if a program requests it specifically by number, or if no other
channels are available.)
The DEV privilege also allows the TTY command to be directed to any
terminal, even if in use by another job. Also, it allows TTY SPEED commands
for any line, even if not a low-speed modem, and allows any speed to be
specified.
A user with the ATT privilege can use the ATTACH command to attach any
detached job, including specifically a phantom job (i.e., a detached job
with the JLOG bit off in its job status word). In this case, ATTACH will
log the job in by turning on its JLOG bit.
A few privileges are available to any user, but must be specifically enabled
by giving the ENABLE command with the privilege name as argument. These
privileges can be disabled by the DISABLE command, also with the name as
argument. These privileges are UPG, LIV, and LUP. The UPG privilege must
be enabled before giving a FLUSH command for a terminal which is in use.
(See page 37 for the use of this command.) The FLUSH command disables the
privilege, so you must enable it every time you use it. The LIV privilege
prevents the automatic logout which normally happens when a job has been
idle for a certain length of time (varying with the time of day). You
should not leave idle jobs logged in without a good reason. If you have
enabled LIV, and your job would otherwise be logged out, and you are at a
Data Disc terminal, and there are no free Data Disc channels, then your job
will be detached, so that the terminal will be freed for other users while
still preserving your job. The LUP privilege means local user; it is set
for all users on login, and distinguishes logged-in (and therefore
authorized) users from guests who use the commands allowed without login.
Various programs restrict the capabilities available to non-local users, and
they cannot write most files. The privilege can be disabled primarily for
the benefit of people debugging system programs which must distinguish local
from guest users, and once disabled, it can be re-enabled only if you are at
a terminal physically within the laboratory building.
Also, a few system programs intended for general use require special
privileges. Such programs are run by special commands (not R or RUN), and
any attempt to modify your core image while running such a program will
disable the temporary privileges involved.
The EDDT command can be given only from the KL-10 console terminal. It
stops timesharing and starts Executive DDT to allow debugging of the
monitor.
The BEEP command can also be given only from the console terminal. It beeps
all terminals on the system, and is used to signal the restoration of
service after a system crash.
A1 SNAIL
SNAIL is a program which interprets certain monitor commands for editing
files, compiling and loading programs, and loading the line editor buffer.
It simplifies these tasks when necessary by expanding concise user commands
into the different forms used by editors, language processors, and the
loaders. Without user intervention, SNAIL will run the correct language
processors to translate the user's files, and will run a loader to create an
executable core image containing the user's program. SNAIL also provides a
convenient means of communication between editors and other processors.
SNAIL knows about certain standard processors. These are the editors: SOS
and TECO; the compilers: SAIL, FAIL, F40 (FORTRAN), MACRO, PALX, BLISS, AL,
MIDAS, PASCAL, and FASM; the document compilers: PUB and POX; the debuggers:
BAIL, RAID, and DDT; and the loaders: LOADER and LINK.
The E editor includes within it the SNAIL functions, so its "SNAIL" commands
run E directly rather than via the SNAIL program. Nevertheless, the E
commands are included here because they are operationally similar.
The SNAIL commands are divided into three classes: EDIT, COMPILE, and CREF.
A1.1 EDIT-Class Commands
There are six EDIT-class commands, two for each of the three commonly used
editors:
Command Name
Program Create File Edit File
E CETV ETV
SOS CREATE EDIT
TECO MAKE TECO
CREATE and MAKE
These commands take a file name as the argument. SNAIL will call the editor
and tell it to initialize the file of that name. For CREATE, SOS is started
in line insertion mode. TECO (the MAKE command) will be initialized to
write on the specified file.
EDIT and TECO
These commands take a file name (with optional project-programmer name) as
the argument. SNAIL remembers the name of the last file that was edited in
a TMPCOR file named ED. (A TMPCOR file is a simulated file kept in core by
the monitor until the job is logged out.) If an EDIT-class command is given
without an argument, SNAIL will use the argument that it remembered.
Normally, the user's SNAIL commands are forgotten when the job is logged
out. However, if both LOGIN:RPGSAV and LOGOUT:RPGSAV are included in the
user's OPTION.TXT file, then the TMPCOR files containing the commands will
be stored on disk between sessions. See Section 5.2.
If no extension is specified in the argument and no file with the given name
and blank extension can be found, then the user's directory is searched for
any file with the given name and one of several standard extensions. The
standard extensions are searched in the order:
FAI S1 SAI FOR F4 LSP PUB POX TEX MAC MID
VLI LAP PAL MIC WRU NSA OSA PAS LST CMD TXT
If none of these is found, the first file listed in the directory with the
correct name and any extension is edited. However, the following extensions
are never selected for editing:
REL DMP XGP FNT CFT DRW WD PC WPC PLT PCP PLX WL WLS LDI RIM FAS
If a user specifies a disk area other than his own current (alias) area,
then the edited file will be put on his disk area and the source (from the
other area) will not be changed.
The editors have a read-only mode in which files may be examined by using
editor commands, but not changed. To get read-only mode type /R after the
file name in the edit command (e.g., ETV M.SAI/R). Read-only mode in SOS
prohibits any commands that would change the file. In the E editor, the
mode may be changed from read-only to read-write at any time.
CETV, ETV, and EREAD
These are the create and edit commands for the E editor. They do not run
the SNAIL program; instead, E itself simulates the SNAIL functions. There
are some differences between these and the other editor commands:
1. The command can include /nP and /nL switches for page and line numbers
and the /N switch for no-directory mode as well as /R for read-only. E
saves its position in the file when it exits, so a later ETV command with no
argument will continue the edit from the same point in the file. An E
command may also contain a list of remembered files, pages, and lines for
ease of switching around. There are also other possible switches. A
complete explanation is in the file E.ALS[UP,DOC].
2. If you specify a PPN with the filename given, E will let you edit the
file on that disk area instead of copying the file to your current area as
the other editors do.
3. The EREAD command is equivalent to the ETV command with the /R switch,
i.e., it edits the file in read-only mode.
READ
The READ command starts E in read-only mode, like EREAD, but looks for the
file to be edited in the system documentation areas [*,DOC] and [3,2]. The
argument to READ should be the name of a system program or concept for which
you would like documentation.
BOOK
The BOOK command starts E in a special mode, called book mode, used to read
long files over an extended time period. In this mode, E does several
things differently from the normal editing procedure:
1. If there is a file with the name in the BOOK command, the extension BKP,
and a PPN matching either that given in the command, your ALIAS PPN, or your
login PPN (tried in that order), it is used as a SNAIL file to determine
where to start editing the specified file. This "bookmark" file is not
deleted by LOGOUT, so you can continue reading at a later session. The
file, if found, is updated when you exit from E; if there was no BKP file,
one is created on your (alias) area when you exit. However, if you exit
from E while on the last page of the file, the BKP file will be deleted (E
assumes you have finished reading the book in this case).
2. A BOOK command with no argument uses TMPCOR files like the ETV command
does, but the TMPCOR filename used is different, so you can alternate ETV
and BOOK commands for different files with no confusion.
3. E does not allow you to modify the file when using book mode.
A1.2 COMPILE-Class Commands
There are three types of COMPILE-class commands: COMPILE-type commands,
which abbreviate a series of commands to compilers (and other language
processors) and loaders; DOCUMENT-type commands, which process a document;
and LOADBUF-type commands, which load the line editor buffer with a sequence
of commands much like the DO processor (see Section 5.7). Each
COMPILE-class command, if given with arguments, remembers both the command
and the arguments in a TMPCOR file named CM. This is useful because all the
editors allow an exit-and-go command (in SOS, the G command; in E, the
CONTROL-X GO command; in TECO, the EG command). The exit-and-go feature
runs SNAIL in a special way which makes SNAIL re-execute the command that it
remembered.
A1.3 DOCUMENT-Type COMPILE-Class Commands
The DOCUMENT-type COMPILE-class commands are the easiest to describe. These
commands, PUB and POX, run the document processors PUB and POX. Both
commands take a file name as an argument, with optional switches. If an
extension is specified with the file name, that file is processed by the
appropriate document processor. If, on the other hand, no extension is
specified with the file name, the user's directory is searched first for the
file with the given name and extension .PUB or .POX, depending on the
command, then for the file with the given name and no extension. Whichever
of those files is found first is the one which will be processed by the
document processor.
Switches to the document processor may be specified in parentheses
immediately following the file name.
Examples of use:
POX FOO.POX
PUB FOO.PUB(LH)
PUB XXX
The last of these will run PUB on the file XXX.PUB if it exists, otherwise
it will run PUB on XXX.
A1.4 LOADBUF-Type COMPILE-Class Commands
The second type of COMPILE-class commands are the LOADBUF-type commands.
There are three such commands: RER, RERUN, and PROCESS. These commands
incorporate some of the features of the DO processor, allowing the user to
take advantage of the exit-and-go feature of the editors for an arbitrary
sequence of commands without paying the penalty of running an extra
processor.
The RER and RERUN commands are similar in form. Both are followed by a
processor name, an optional core size for the processor, a double-arrow, and
a string (called the object string) terminated by a line feed. SNAIL swaps
control to the designated processor after loading the object string into the
line editor buffer. The only difference is that the processor in the RER
command is retrieved from the SYS: disk area, while the processor in the
RERUN command is retrieved from the user's own disk area, or one that he
specifies explicitly. This distinction is the same one made between the R
and RUN monitor commands.
The PROCESS command is followed by a double-arrow and an object string,
terminated by a line feed. After loading the object string into the line
editor buffer, SNAIL exits.
The command PROCESS @ will load into the line editor buffer the text of the
CM TMPCOR file, i.e., the remembered COMPILE-class command of any type.
SNAIL preprocesses the object string for all three commands by replacing
occurrences of the character double-arrow ("↔") by a carriage return-line
feed. The DO processor also does this. However, the other
character-replacement features of DO are not currently implemented.
The RER and RERUN commands are compatible in the following way. If a RER
command with its arguments has been previously given by the user and saved
by SNAIL in a TMPCOR file, and the user subsequently types RERUN without any
arguments, the effect will be that of typing RERUN with the arguments of the
previous RER command. That is, the processor will be retrieved from the
user's disk area instead of from the system disk area. Analogously, if a
RER command with no arguments is given and the command file contains a RERUN
command, the designated processor is retrieved from the system disk area
instead of the user-specified disk area. In either case, the core size and
object string are processed as described above.
If a PROCESS command is given with no arguments, the command TMPCOR file
must contain a PROCESS command. If a RER or RERUN command is given with no
arguments, the command TMPCOR file must contain a RER or RERUN command.
Otherwise an error message will be printed and the line editor buffer will
not be loaded.
Examples of use:
RER IL↔(DSKIN FOO)↔
PROCESS↔R IL↔(DSKIN FOO)↔
RERUN IL[UCI,SYS]↔(DSKIN FOO)↔
The first two examples will do the same thing. The third example could be
used to allow alternating use of RER and RERUN to compare the current
version of ILISP with a new version.
A1.5 COMPILE-Type COMPILE-Class Commands
The last type of COMPILE-class command to be described is the COMPILE-type
command. There are six COMPILE-type commands: COMPILE, LOAD, PREPARE,
DEBUG, EXECUTE, and TRY. Following the command, the user lists files which
are to be compiled or loaded.
All COMPILE-class commands normally cause compilation of the specified
source files. All but the COMPILE command may cause execution of a loader
(LOADER or LINK) to create a core image, possibly including a debugger. The
table below summarizes the actions of the COMPILE-type commands.
REL file Core Image Debugger Execution
COMPILE yes
LOAD yes yes
PREPARE yes yes yes
EXECUTE yes yes starts the user program
TRY yes yes yes starts the user program
DEBUG yes yes yes starts the debugger
The COMPILE command takes as arguments one or more file descriptors,
separated by commas. SNAIL will cause the appropriate translator to be used
for each of the files. The COMPILE command does not produce a core image;
to get an executable core image one of the other COMPILE-type commands must
be used.
LOAD does a COMPILE if necessary and then starts a loader (LOADER or LINK).
The loader takes the .REL files that were generated by the compilers and
combines them into an executable core image. When the loader is done, it
exits to the monitor. This command makes a core image but does not start
it. If any SAIL program is loaded, the loader will be instructed to request
the current SAIL segment.
PREPARE is like LOAD, but a debugger (BAIL for SAIL programs, RAID for other
programs when the user is at a display, and otherwise DDT) is loaded with
the user's program.
EXECUTE is like LOAD, but instead of exiting, the loader starts the program
it loaded at its specified starting address.
The TRY command is like EXECUTE, but it loads a debugger (BAIL, RAID, or
DDT, as in the PREPARE command) with the user program. Execution starts at
the program's starting address.
DEBUG is like TRY except that rather than starting the user's program it
starts the debugger (RAID or DDT--if the debugger is BAIL this command is
treated exactly the same as TRY). The user may give commands to the
debugger to start his program, to plant breakpoints, etc.
SNAIL writes TMPCOR files for each processor involved in compiling or
loading the files specified in the user's command string. SNAIL also
attempts to minimize unnecessary compilations by checking the creation dates
for the files the user wants compiled; for example, if the command was
EXECUTE X1.SAI,X2.SAI
and the file X1.REL has a later creation date than the file X1.SAI, SNAIL
assumes that X1.SAI has not been changed since it was last compiled, and
omits X1.SAI when it tells SAIL which files to compile. If the REL file and
the source file have the same time written, then the file is compiled again
for safety, in case the source has been changed.
The user can override SNAIL's date-checking by specifying certain switches.
A SNAIL switch is selected by including a slash ("/") followed by the
appropriate switch name. Switches which affect the date-checking actions of
SNAIL are the following. A switch of the form /-XYZ turns off a previously
set /XYZ.
/COMPILE Force recompilation without checking the dates of .REL
files.
/REL Force loading from the .REL file if it exists.
/NOLOAD Don't issue a loading request for this file.
/LONLY (Implies /COMPILE, /NOLOAD, and /NODMP.) A listing should
be made for this file, but no load request for it should be
issued.
/CONLY (Implies /COMPILE, /NOLOAD, and /NODMP.) A cross-reference
listing should be made for this file, but no load request
for it should be issued.
/LIBRARY (Implies /REL.) Force the loader to search this file as a
library.
/NODMP Don't include the .DMP file in date-checking or deciding
which file to give control to first. This switch has no
inverse.
SNAIL remembers the last COMPILE-type command with arguments it was given,
just as it does for DOCUMENT-type commands and LOADBUF-type commands, in a
TMPCOR file named CM. This "remembering" may be turned off for COMPILE-type
commands by using the /NOCMFI switch; if this switch appears in a command,
the CM file will not be written for that command. This switch is useful
when using either a LOADBUF-type command or the DO processor, and including
within the command string another SNAIL COMPILE-class command; if /NOCMFI
were not specified, the second command would be saved in the CM file instead
of the first.
The simplest way to translate several programs is to create them with file
extensions which define the processor to be used; then give a single COMPILE
command with all these names separated by commas. (If a standard extension
is specified for a file, SNAIL cannot be convinced to use some other
processor.) Extensions which SNAIL knows about are the following:
.FAI signals a FAIL program
.SAI signals a SAIL program
.MAC signals a MACRO program
.F4 signals a FORTRAN program
.PAL signals a PALX program
.BLI signals a BLISS program
.AL signals an AL program
.MID signals a MIDAS program
.PAS signals a PASCAL program
.S1 signals a FASM program
SNAIL does not require file extensions to be typed explicitly. For the
command COMPILE FOO, SNAIL will look for any file named FOO and check its
extension. If a file FOO is found that does have one of the standard
extensions, SNAIL will select the corresponding translator. If a file does
not have a standard extension, SNAIL can be told which translator to use by
giving that information in the command string. Switches which tell SNAIL
which translator to select are the following (/-PROC undoes the effect of a
previously seen /PROC):
/FAIL Process this file with the FAIL assembler.
/SAIL Process this file with the SAIL compiler.
/MACRO Process this file with the MACRO assembler.
/F4 Process this file with the FORTRAN compiler.
/PALX Process this file with the PALX assembler.
/BLISS Process this file with the BLISS compiler.
/AL Process this file with the AL compiler.
/MIDAS Process this file with the MIDAS assembler.
/PASCAL Process this file with the PASCAL compiler.
/S1 Process this file with the FASM assembler.
More on File Names
A project-programmer name (PPN) may be included with each file name in the
command for COMPILE-type commands, just like for other SNAIL commands. The
PPN specifies the disk area from which the file is to be read. The PPN,
enclosed in square brackets ([ and ]), usually follows a file name; in this
case the PPN applies only to the preceding term. If a PPN appears before a
file name, then that PPN is sticky (i.e., it applies to all the terms that
follow) for the rest of the command until another sticky PPN is seen.
A name followed by a colon (:) is a device name (which is sticky). Some
devices are non-directory devices (for instance, TTY: and MTA:); a file name
need not follow specification of such a device. For example, the command
COMPILE TTY:/SAIL
compiles, using the SAIL compiler, input from the user's terminal.
More on Switches
Switches are allowed in COMPILE-class commands by including a slash (/) and
the switch name, e.g., /LIST. Switches allow the user to select options.
In general, a switch placed before a file name is sticky. Switches placed
after a file name are not sticky; they apply only to the preceding term.
Specifying a minus ("-") before a switch turns off that switch. For
example, the command
COMPILE/FAIL A,B,C/-FAIL
will compile the files A and B using the FAIL assembler, and will compile C
using some other translator depending on extensions of files with file name
C.
Concatenation of Source Files
It is often desirable to break up a program into two (or more) separate
files which have only one END statement at the end of the last file. One
reason for breaking up a program is because it is very long, and it would be
inconvenient to keep and edit such a large file. Another reason for
separating a program is to allow a portion of the program text to be shared.
Several files can be processed together as one big translation by separating
their names with plus signs (+) rather than with commas. For example,
COMPILE DATA+PROGRM
treats the files DATA and PROGRM as if they were one large file and produces
one relocatable binary file, PROGRM.REL. SNAIL will not allow concatenation
of source files that specify inconsistent processors.
Normally, the REL file will have the name of the last file in the command
string; it can be given some other name by putting the desired name and an
equals sign (=) at the front of the argument list, e.g.,
COMPILE FOO=SYMS+PROGRM+IOPACK
would do one translation as if SYMS, PROGRM, and IOPACK were one large file
and produce relocatable binary output on the file FOO.REL.
Occasionally, a header file must be assembled with several other files,
e.g.,
COMPILE ACUMS+SINE,ACUMS+COSINE,ACUMS+TANGNT
The brokets (< and >) feature allows this to be done more simply:
COMPILE ACUMS+<SINE,COSINE,TANGNT>
Brokets may not be nested. Also, a plus sign may not follow a right broket;
e.g., the following command is illegal:
COMPILE <A,B,C>+ENDS
Producing Symbolic Listings
Assembly listings have the original code as it appears in the file plus the
octal values that the code represents with the relative locations that the
octal values go in. Assembly listings can be generated by means of a /LIST,
/LONLY, /CREF, or /CONLY switch in the command.
The /LIST and /LONLY switches will produce a file with the same name as the
REL file and extension LST. Such a file may be spooled or typed. The two
switches differ in that the /LONLY switch implies /COMPILE, /NOLOAD, and
/NODUMP; i.e., it means that the only thing to do with the file is make a
listing for it, and no REL file will be generated by the compiler for the
source file. Note that COMPILE FOO/LIST will not compile anything if a
current FOO.REL exists (this is another instance where the /COMPILE switch
is useful). The /LIST may be used as a sticky switch or it may be applied
to particular terms. The inverse switches are /-LIST and /-LONLY.
(Processors other than the assemblers may also produce listings.)
If either the /CREF switch or the /CONLY switch appears, instead of /LIST,
it generates an expanded listing that includes a list of all the symbols
(identifiers) used in the program and the line numbers on which each symbol
appears. This is called a cross-reference listing. These listing files
cannot be printed directly. Instead, they must be processed by the
cross-reference lister program, CREF. This is done by the CREF command (see
page 71). The /CONLY switch differs from the /CREF switch in that the
source file will always be compiled, and no binary file will be generated by
the compiler for the source file. The distinction between the /CREF and
/CONLY switches is the same as that for the /LIST and /LONLY switches
described above. Note: not all the processors can produce a cross-reference
listing. Consult the appropriate manual to find out if a given processor is
capable of generating one.
Generating Core Images and DMP Files
The commands EXECUTE, DEBUG, LOAD, PREPARE, and TRY each generate an
executable core image. Core images are made by translating source files (as
in the COMPILE command) and then running a loader (either LINK or LOADER),
which takes the REL files and produces a core image from them. For the
DEBUG, PREPARE, and TRY commands, the loader is instructed to load a copy of
RAID (or DDT if the user is at a non-display) and the program symbol table
with the core image.
Several SNAIL switches are relevant to the selection of a loader, and to the
actions of the loader once it starts loading. These switches are listed
below. They can be negated with /-SWITCH.
/LINK The LINK loader will be used to create the user's core image.
/LOADER The LOADER loader will be used to create the user's core image.
/BAIL If the command specified a debugger (i.e., if the command was
DEBUG, TRY, or PREPARE), BAIL will be loaded.
/RAID If the command specified a debugger, RAID will be loaded.
/DDT If the command specified a debugger, DDT will be loaded.
/MAP The absolute values of all the global symbols will be listed in
a legible way on a file named MAP.MAP; this may not work for
LOADER.
/NOSAISEGThe Sail segment will not be loaded.
/SAVE A disk dump will be made of the core image. The dump file will
have the same name as the first REL file and extension .DMP; it
can be given some other name by putting the desired name and a
left arrow (←) in the command string. /SAVE is unnecessary if
the left-arrow construct is used.
The command
TRY DUMP←SINE,COSINE/SAVE
translates the programs SINE and COSINE, producing SINE.REL and COSINE.REL.
The LOADER is run. Because the TRY command requests a debugger, RAID.REL
(or DDT.REL) is loaded from the system area. SINE.REL and COSINE.REL are
loaded next. Then the LOADER makes a dump copy of the core image in the
file DUMP.DMP and starts the program.
If there already exists a DMP file of the right name and if it has a
creation date more recent than those of the source files, no loading will be
done. Instead, the dump copy itself will be called in. Reloading may be
forced by the /NODMP or /NODUMP switch in the command line. Both an equals
sign and a left arrow may be included in a command string. For example:
COMMAND REL DMP
TRY SINE+COS/SAVE COS.REL COS.DMP
TRY DUMP←SINE+COS/SAVE COS.REL DUMP.DMP
TRY DUMP=SINE+COS/SAVE DUMP.REL DUMP.DMP
TRY FOO←DUMP=SINE+COS/SAVE DUMP.REL FOO.DMP
Library Searches
Several REL files may be combined into a library. A library is a special
REL file from which routines may be independently selected. Library files
are made by combining REL files together using the FUDGE2 program (which is
described in DEC documentation). For example, sine, cosine, and tangent
routines might be combined into a trig library, TRIG.REL. Then, if a
particular program used just the sine routine, instead of loading the entire
trig package it would be able to select only the sine routine. The loader
will search library files and load only the programs that are needed. The
/LIBRARY switch after the name of a library file tells SNAIL to request this
loader feature. The /LIBRARY switch may also be used as a sticky switch;
its inverse is /-LIBRARY. Suppose there is a program called NLT which uses
the sine routine that was included in TRIG.REL. Then the command
LOAD NLT,TRIG/LIBRARY will cause NLT to be loaded and TRIG to be searched.
The LOADER notices that NLT requires SINE.REL and searches TRIG.REL for it.
Suppose another program, XLT, requires routines from two library files,
TRIG.REL and IOPACK.REL, and must be loaded with another program LT. Then
any one of the following commands could do this:
LOAD XLT,LT,/LIBRARY TRIG,IOPACK
LOAD /LIBRARY XLT/-LIBRARY,LT/-LIBRARY,TRIG,IOPACK
LOAD XLT,LT,TRIG/LIBRARY,IOPACK/LIBRARY
Programs which use library files must be placed before the library file
names in the command. This is because the loader cannot know what routines
to extract from each library until it has loaded the programs that require
library routines.
Alternate Processor Features
Processors other than SAIL, FAIL, FORTRAN, PALX, or MACRO may be specified
by using the alternate processor feature. The switch /PROCESSOR DEV:NAME
specifies an alternate processor. In this switch, DEV (assumed to be DSK,
if absent) is the device name on which to find NAME.DMP, the core image file
of the alternate processor. Once the /PROCESSOR switch is used, SNAIL will
recognize the extension NAM (i.e., the first three letters of the processor
name) and the switch /NAME (the processor name) in the command line. A
project-programmer name or device name may be used in specifying the
alternate processor.
For example, for a user to translate the program SINE using a processor
named PROC on his disk area, he could use the command:
COMPILE SINE/PROCESSOR PROC
When a standard processor is used, it is known that it will take a text
source file and produce a binary REL file, and possibly a text LST file.
With alternate processors there is no such guarantee. An alternate
processor may process a text file into a new text file which becomes input
to a standard processor. It is possible to specify all these functions in a
single COMPILE-type command.
If an alternate processor generates a text file instead of a REL file,
loading must be inhibited. The /NOLOAD switch accomplishes this. The
/NOLOAD switch must be used for each term that does not produce a REL file
(except in the COMPILE command, which does no loading anyway). The inverse
switch is /-NOLOAD.
Suppose the preprocessor, PRE, translat`LAiQJ↓MSYJ↓¬β4A%]i↑A∧AMSY∀A
∨≡↓oQSG ~∃Sf↓BA
β%_Aae=OeCZ8@A
∨<A[kgPAEJAQeC]g1CiKH↓oQK\↓!%
A%fAI←9J\@A¬Yg↑X↓≠β∪≤↓C]H~)'∪≥
↓[kgh↓EJAiIC]gY¬iKHA¬]HAY=CIKH↓oSiP↓
∨≡\A)QJ↓G←[[¬]Ht~(~∀@@@@@@↓→∨βλ↓
∨≡{ β4←!I∨π'M∨$A!I
←≥∨1∨βλY5β∪≤YM∪≥
Y→∨≡←
=%/β%⊂~∀~∃]SYXA⊃↑ACY0A←LAQQSf\A)QJ←
∨%]β%λAMoSiG ASfA9KGKgMCerA KGCkMJAiQ∀@AMS1JA
∨<~∃I←∃fA]←P@AKqst at the time the command is given. Including the /FORWARD
switch prevents SNAIL from looking for FOO; SNAIL will assume that FOO
magically appears before FAIL is called. The inverse switch is /-FORWARD.
The processor DO (see Section 5.7) is another example of an alternate
processor. The DO program writes the CM TMPCOR file to force the
exit-and-go command from the editors to run DO again.
Translator Switches
Switch names enclosed in parentheses "(" and ")" are passed directly to the
translator. The documentation for each of the translators explains what
switches are available. The switches passed in this way appear on the
source file specification. Sometimes it is necessary to put switches on the
binary or listing term. For this purpose, there are two other switch
constructions.
The construction (#1,#2), where #1 and #2 are any switch strings, passes #1
to the binary term and #2 to the source term. The construction (#1,#2,#3)
passes #1 to the binary term, #2 to the listing term, and #3 to the source
term. For example,
COMPILE/LIST FOO(AX,BY,CZ)
will pass the switch string "AX" to the binary term, "BY" to the listing
term, and "CZ" to the source term.
Loader Switches
Switches to the loader may be specified in a COMPILE-class command.
Switches to LOADER appear as a percent sign (%) followed by a letter (or a
number and a letter) in the command string of one of the LOAD, TRY, EXECUTE,
PREPARE, or DEBUG commands; switches to LINK appear as a percent sign
followed by some character not appearing in the switch string, followed by
the switch string, followed by the character that appeared after the percent
sign. In either case, the switch string is directly specified to the
appropriate loader. Examples:
EXECUTE FOO1,FOO2,FOO3%M
TRY BIGPRG.SAI%100K
TRY/LINK BIGPRG.SAI%"RUNCOR:100"
LOADER and LINK switches are listed at the end of this appendix. For a full
description of what the other switches above mean, consult the DEC
documentation for LOADER and LINK. The LOADER has been modified for
Stanford, so the DEC documentation does not accurately reflect the state of
the software. Consult a wizard if necessary.
Command Files
COMPILE-class commands are sometimes too long to fit on one line, or are too
complex to be typed correctly every time. To solve this problem, arguments
can be read from a file. The text contained in such a file is read by SNAIL
as if it had been typed as the arguments to a command. The command file may
contain any features available in a COMPILE-class command. Any text between
a semicolon and the next line-feed is ignored; carriage-returns and
line-feeds are also ignored, and hence may not be used to separate file
names or other identifiers.
To use a term as a command file write an at sign (@) before the command file
name, e.g., LOAD @SYS. Upon scanning the at-sign followed by a file name,
SNAIL looks for a command file with that name; if no extension was
specified, SNAIL checks first for the file with extension .CMD, then for the
file with no extension and the specified name. The command file SYS might
look like the following file which is used to assemble the entire operating
system:
%S%B%? WAITS=HEAD(XLR)+OUTER+JOBDAT+ALLDAT+IMPDDB+DLNDDB;
+LOWCOR+PARSER+SYSINI+MPXSER+KLSER+COMCSS+CLKSER+PAGSER;
+UUOCON+SPWSER+SCHEDU+SWPSER+CORE;
+DPYSER+TTYSER+LINED+DLNSER;
+DSKSER+DTCSER+MTCSER+TVSER+LPTSER+ELFSER+CARSER;
+XGPSER+PTPSER+PTRSER+SIXSER+IMPSER+NULSER;
+PATCH+DDT+ONCE
A1.6 CREF Command
This command causes a cross-reference listing to be made. All the files
made from COMPILE-class commands which used the /CREF switch are processed;
for each such file, a cross-reference listing is generated in a file with
extension LST and the name of the file being processed. (LOGOUT makes SNAIL
forget which listing files to process.) The CREF command activates SNAIL
which in turn activates the CREF program in a special way. The CREF program
when activated in this way reads a file that SNAIL wrote which contains the
names of the files to process.
A1.7 Switch Function Summary
Switch Abbrev Meaning
/AL /A Use AL for this term.
/BAIL /BA Use BAIL if a debugger is required.
/BLISS /BL Use BLISS for this term.
/COMPILE /COM Force re-compilation without checking the dates of REL
files.
/CONLY /CON Force re-compilation and produce only an extended
listing to be input to the CREF processor.
/CREF /C Request a cross-reference listing.
/DDT /D Use DDT if a debugger is required.
/F4 /F4 Use F40 (FORTRAN) for this term.
/FAIL /F Use FAIL for this term.
/FORTRAN /FORT Use F40 (FORTRAN) for this term.
/FORWARD /FORW Prevent SNAIL from looking for this file to decide if
the REL file is up to date.
/LIBRARY /LIB Force the loader to search this term as a library.
/LINK /LIN Use the LINK loader to create the core image.
/LIST /L Request a listing file.
/LOADER /LOA Use the LOADER loader to create the core image.
/LONLY /LON Force re-compilation and produce only a listing file.
/MACRO /M Use MACRO to translate this term.
/MAP /MAP Request a loader map of global symbols.
/MIDAS /MI Use MIDAS for this term.
/NOCMFI /NOC Don't generate a CM command file for this command.
/NODMP /NOD Force re-loading without checking the dates of DMP
files.
/NOLOAD /NOL Prevent a loading request for this term.
/NOSAISEG /NOS Load SAIL programs with the SAIL library instead of
the SAIL segment.
/PALX /PAL Use PALX to translate this term (produces .BIN file).
/PASCAL /PAS Use PASCAL for this term.
/PROCESSOR /PR Specify an alternate processor.
/RAID /RA Use RAID if a debugger is required.
/REL /RE Force loading from the REL file if it exists.
/S1 /S1 Use FASM to translate this term (produces .LDI file).
/SAIL /S Use SAIL to translate this term.
/SAVE /SAV Force the LOADER to make a DMP file of the core image.
A1.8 LOADER Switches and LINK Equivalents
LOADER LINK Meaning
Switch Equivalent
%A %"CONTENT:ZERO" Causes a listing of all global symbols to be
printed.
%B %"SYMSEG:LOW" BLT symbols down when done loading.
%1B BLT symbols to upper segment.
%C Chain beginning with Common.
%D %"TEST:DDT" Load DDT.
%E %"EXECUTE" Start up program when done loading.
%F %"SYSLIB" Enter library search mode; search all default
libraries.
%G %"GO" Finish loading, make final links, and exit.
%H %"DEBUG:RAID" Load and start RAID.
%I %"NOSTART" Ignore starting address of this program.
%J %"START" Use starting address of this program.
%nK %"RUNCOR:n" Adjust to n K of core (2n pages) when done
loading.
%L %"SEARCH" Search this file as a library.
%M %"MAP:END" Print storage map.
%N %"NOSEARCH" Leave library search mode.
%nO %"SET:.LOW.:n" Set program origin to n, absolute.
%P %"NOSYSLIB" Inhibit automatic library search for undefined
globals.
%Q %"SYSLIB" Allow automatic library search.
%R Chain beginning with resident module.
%S %"LOCALS" Load symbol table also.
%T %"DEBUG:DDT" Load and start DDT.
%U %"UNDEFINED" Print current list of undefined globals.
%V %"TRY:RAID" Load RAID.
%W %"NOLOCALS" Load without symbols.
%X %"CONTENT:NOZERO" Do not list all globals.
%Y Load SAILOW for 2 segment SAIL programs.
%Z %"RUN:LINK" Restart LOADER.
%< Disallow loading into upper segment.
%1< Allow loading into upper segment and load there
next.
%n< (n≥400000) Set upper segment relocation to n.
%-< Allow loading into upper segment and load in
lower next.
%? Sort symbols.
A1.9 Error Messages
Obvious errors
No command file.
Incompatible commands.
You gave a command with no arguments, and either no command had been
saved or the two commands (the one you typed and the one which had
been saved) aren't compatible.
Unrecognizable file name.
No such device.
Unrecognizable processor name.
You mistyped a file or processor specifier.
Not a display.
You're trying to load the line-editor buffer and you're not using a
display.
Missing double-arrow or invalid core size.
Missing double-arrow.
The LOADBUF-type commands must always be followed by a double-arrow.
Too many files.
Currently the PUB and POX document compilers can only process one
document at a time.
File not found.
Either some file named in the command does not exist, or it doesn't
exist with the correct extension. You'll get this message if you
try to use the /FAIL switch with FOO.SAI, for instance.
Unknown command.
Command error.
Illegal character.
Something is wrong with what you typed, and SNAIL didn't find in the
command what it expected to find. For example, a file name didn't
follow an at-sign.
Nested brokets illegal.
Unbalanced brokets.
Can't use "=" with brokets.
You're not using brokets correctly. Each of the files within the
brokets will produce a different REL file, so the equal-sign
construct can't be used.
Unknown switch.
Negation of this switch not allowed.
Invalid switch string.
Illegal LOADER switch.
Illegal LINK switch.
Subtle errors
Empty command file.
Error in command file.
Tmpcor file too big.
The CM command file which SNAIL is attempting to read is messed up
somehow.
Storage overflow.
Your command included too much of something (file names, device
names, alternate processor specifications, translator or loader
switches), or there are too many files in your directory that have
to be date-checked.
Horrible errors (a wizard should be consulted)
SNAIL bug.
SNAIL allocation error.
Typing CONTINUE followed by a carriage return when the latter
happens might work.
Can't open channel.
This is probably a bug in SNAIL.
Couldn't create file.
A disk file could not be written correctly. Possibly a file is
write protected or in use by some other job. Otherwise you may need
help.
UFD missing.
You are aliased to a non-existent disk area. Otherwise, you need a
wizard.
A2 COPY
This appendix is taken from COPY.RPH[S,DOC], SAILON 61.1, the COPY manual.
The manual first describes the basic COPY command with all possible options,
and then lists the other monitor commands which run COPY and describes their
special functions.
Syntax
In this section the following rules are observed. Anything in curly
brackets is optional. Anything enclosed in brokets (e.g., <.......>) has a
syntactic definition of its own and is described elsewhere. Upper and lower
case letters are legal anywhere. A break character is something which is
not a letter, a number, or a "*". This will become important when you try
to figure out some of the error messages. In this manual the term sticky
means that the sticky item is applicable until changed or until the end of
the current command.
The basic syntax for all COPY commands is:
COPY {{<destination term>}{,<list term>}←}<source term>
The character "{ }="{ } may be substituted for "{ }←"{ }.
<destination term>::=<switch term>
<source term>::= <switch term>{,<source term>}
<switch term>::= {<switch list>space}<term>{<switch list>}
<list term>::= <term>
<term>::= {dev:}{filnam{.ext}}{[prj,prg]}
| {<switch list>}{dev:}{[prj,prg]}{<switch list>}
@<spec term>
| \<filehack selector>
| ∂{ <prg> | * }{.ext}{[prj,prg]}
<spec term>::= {<spec switch list> }{dev:}{filnam{.ext}}
{[prj,prg]}{<spec switch list>}
<switch list>::= {/<switch>}{(<page list>)}{<switch list>}
<spec switch list>::={/<switch>}{<spec switch list>}
<page list>::= <page term>{,<page list>}
<page term>::= N{:M}
General Operation
COPY reads data from the logical file(s) indicated by the source term,
performs any operations requested by the switch term(s), and writes the data
on the logical file indicated by the destination term. Any listing
information goes to the list term.
Dev and ppn are sticky in the source; that is, if they are absent, the last
one specified is used. The default device is DSK and the default ppn is
blank (those of the current job).
A single * may be substituted for any of the following:
filnam
ext
prj
prg
A * in the source term means "all." A * in the destination term means "same
as in source file being transferred."
If filnam.ext is absent in the destination term, *.* is assumed. If the
destination filnam.ext are specified (no *'s), all source files will be
concatenated into one big file with that name.
For example:
COPY DING←FOO,BAZ
would cause a file named DING to be created on your disk area comprised of
the files FOO and BAZ from your area. If filnam.* or *.ext is used in the
destination term, the source files will be copied onto the destination one
by one with the new filename or extension. <destination term>← may be left
out and DSK:*.*← will be assumed. For source terms with directory devices
you must specify the filnam.ext.
If you try to write on top of a file which already exists, you will be given
the option of deleting it or not. If any of the source files you have
specified do not exist, you will be informed and given the proper option.
If a string of source descriptors is specified, the string is executed from
left to right.
You cannot write a file in two different modes (e.g. FIL1←TTY:,DSK:FIL2).
However FIL1←TTY:,DSK:FIL2/ASCII is quite acceptable (/ASCII causes the data
mode to be 0). Data modes are explained in the UUO Manual.
The <spec term> construct causes the scanner to continue scanning in the
file specified by the term. The term must indicate a unique file. When end
of file occurs the scanner again reads from the terminal. No spec terms may
appear in the file. Switches preceding the "@" are treated as sticky
switches. Switches following the "@" are treated as sticky switches only
while reading from the indirect file. In a sense the indirect file is a
"program block." Upon leaving the "block" all defaults are reset to those
in force just before the "@". A device name and ppn may precede the "@", in
which case the defaults are changed to those, but no operation is done. The
device and ppn used in the spec term do not affect the current defaults.
The \<filehack selector> construct for a term is a special shorthand feature
to allow commonly referenced files which would normally require a large
amount of typing to be entered quickly. The following is a list of legal
filehack selectors and what they are short for (<prg> stands for the current
programmer name right justified). Only enough letters to uniquely identify
the name among those in this list need be typed.
Filehack
Selector File selected What for?
MSG <prg>.MSG[2,2] Current user's mail file
MAIL <prg>.MSG[2,2] Current user's mail file
PLAN <prg>.PLN[2,2] Current user's plan file
PLN <prg>.PLN[2,2] Current user's plan file
NAP <prg>.NAP[2,2] Current user's NS notification file
NS <prg>.NAP[2,2] Current user's NS notification file
RPG *.RPG[*,<prg>] All of current user's RPG files
OPTION OPTION.TXT[*,<prg>] All of current user's option files
DOWN MAINT.TXT[2,2] System downtime forecast
DIGEST DIGEST[2,2] Latest A.P. news digest
NOTICE NOTICE.TXT[2,2] System message file
GRIPES GRIPES.TXT[2,2] System gripe file
GOLD GRIPES.OLD[2,2] System gripe archive file
DAY DAY.TXT[2,2] Daily birthday or holiday message
FORWARD FORWRD.TXT[MAI,SYS] Mail forwarding list
The filehacks which implicitly use the current programmer name to select a
file can also be given an explicit prg in the form \HACK:<prg>.
The ∂{<prg>|*} construct is another form of shorthand for referencing MAIL
files (see Appendix 4). If no argument follows the ∂ then the current
user's mail file is indicated. If <prg> is used, it means that user's mail
file. And lastly, if * is used the file NOTICE.TXT[2,2] is selected (this
is the public mail file). The default extension (.MSG) and PPN ([2,2])
implied by ∂ can be explicitly overridden, e.g., ∂PRG.PLN will get user
PRG's plan file.
There is a page counter in COPY which monitors ASCII output for form feeds.
When a form feed is encountered, the counter is incremented. If a page list
is used in a term, N is taken as the starting page of this output and M (or
N if M is absent) as the ending page. Output is only active when the
counter is within the range of the page list (e.g., LIST COPY(21) would list
page 21 of the file COPY). When the end of the first term is exhausted,
control is transferred to the next term, and so on until the right
parenthesis is reached, at which point output ceases. If more than one file
is indicated, the page list is re-scanned for each one. Page lists are
never sticky. An asterisk (*) may be used in a page list instead of the
final page number, to denote the last page, e.g., LIST COPY(3:*) would list
all but the first two pages of the file COPY.
Switches will be described in a section of their own. See /LIST for an
explanation of "list term."
Logical device names may be used, but all switches apply to the physical
device. The following are legal physical devices for the copy command:
DSK UDPn DTAn MTAn TTYn
LPT XGP PTR PTP TTY
When the special character ↓ (↑A on non-displays) appears, the scanner will
read the line character-by-character without interpretation until the next ↓
(or ↑A). This is useful for allowing non-alphameric characters to be
included in filenames, e.g., editor or spooler temporary files.
For numeric input there is always a default radix (either decimal or octal).
Sometimes, however, it is desirable to force one or the other. A number
preceded by a single quote is always interpreted in octal. A number
preceded by a double quote is always interpreted in decimal.
Device Peculiarities
Non-Directory Devices:
If the source device doesn't have a directory and the filename and/or
extension is specified by a *, then a generated filename and/or extension is
used. The generated filename starts out as AAAAAA and the generated
extension starts as COP. Either of these may be changed by specifying a
filnam.ext in the source term. If a star (*) is used, the old name is
retained; otherwise it is replaced by the new one. At the beginning of each
term the filename is either changed to that which was specified or
incremented by one letter (i.e., AAAAAZ.COP is followed by AAAABA.COP). The
following example may clear things up:
COPY DSK:*.*←MTA0:,,FOO.*,,*.BAZ
This would read 5 files from MTA0 and give them the following names:
AAAAAA.COP
AAAAAB.COP
FOO.COP
FOOA.COP
FOOB.BAZ
Disk:
You may delete files belonging to other users (please exercise extreme
care). However, if you attempt to delete a file on a user file directory
whose programmer name is different from the one you used when logging in,
you will be asked if you are sure. All normal file protection applies to
deletions.
User Disk Pack:
COPY treats new format (file structured) UDPs like the main file disk. The
file-structure simulation which COPY provided for old format UDPs is no
longer available.
DECtapes:
DECtapes are assumed to be in PDP-6 format (which is the current format our
system uses). See the UUO Manual for an explanation of DECtape formats. If
the directory becomes full (more than 30 files), you will be told which was
the first file not transferred. If the DECtape becomes full, the file
currently being written may be incomplete. An attempt is made to detect
this condition before the transfer is initiated, but this is not always
possible. The total file capacity of a DECtape is about 71.4K words. In
order to write on a DECtape the OFF-WRITELOCK-WRITE switch must be in the
WRITE position. If not, you will be told to set it.
Magnetic tapes:
Mag tapes may be made to look like directory devices by use of the /SAVE
switch which is described later. All mag tape switches are separate for
input and output (see rules about switches in switch section). This means
that mag tape switches in the destination term don't apply to the source
terms.
Paper tape:
Paper tape I/O is done in binary non-checksummed mode unless otherwise
specified (see /ASCII). You should turn off the paper tape reader when you
are done. A paper tape with a jagged end may cause spurious data to be
read. It is best to tear it evenly at a fold.
Terminals:
On display terminals, COPY displays the number of the page being read (if
>1) if reading in mode 0, i.e., the number of form feeds seen +1.
Spooling pseudo-devices:
COPY recognizes two pseudo-device names, TPL: and PGX:, to allow spooling of
the output of some copy function to the LPT or XGP, respectively. These
device names may be used only in output terms, and may not be used with file
names. COPY creates a file on the [SPL,SYS] directory containing the
desired output, and enters a spooling request for the appropriate device.
The file is deleted after spooling. For a standard COPY command, the effect
is essentially equivalent to the recommended SPOOL/RECOPY (see page 82);
the main advantage of this capability is for direct spooling of list terms,
e.g.,
DIRECTORY TPL:←[*,SYS]
to spool a list of the [*,SYS] file directories. (Note: It is claimed that
these pseudo-device names stand for The Pseudo Lpt and Pseudo Graphic
Xerox-machine respectively.)
Switches
The term sticky means "applies until the end of the line or until changed
temporarily or permanently by some means." Most switches appearing in the
destination term are carried over as sticky switches in the source. Those
switches which are separate for destination and source terms are indicated
by a star (*) preceding the switch name. Switches appearing in the source
term are sticky only if they precede the term with which they appear.
Otherwise, they apply only to the current term and must follow it. Only the
first six characters of a switch are significant. You are only required to
use enough characters to uniquely specify the switch.
The following switches are now available:
SWITCH ABBREV MEANING
ALL AL This switch includes all of the input file in the
output even if the file uses the offset feature
on the disk to "hide" some data at the beginning.
See the disk offset feature in the UUO Manual.
ASCII A This forces transfers to be in ASCII. Beware!
This switch will cause SOS line numbers to become
part of the text.
ASK ASK This causes dev:filnam.ext[prj,prg] to be printed
for each file under consideration followed by a
question mark. If you answer "Y" the operation
will proceed, if you answer "G" the operation
will proceed but you will not be asked the for
the rest of the term, otherwise the file will be
skipped.
BINARY B This causes the data mode to be 13 and forces
word by word transfer of data.
BLOCKED BL This causes records to be ended on output
whenever they are ended on input.
CONVERT C This causes copy to treat the character following
a line feed and the first character of a file as
a FORTRAN control character. Be careful, this
happens on output.
*DENSITY=n DE This sets the density in bpi to n where n equals
800, 556, or 200. This switch is ignored for
devices other than mag tapes. The system default
density is 556.
*DSPOOL DS This switch, when used with destination or list
terms, causes the output file to be spooled with
the /DELETE switch. Output device must be disk.
This switch is illegal in source terms.
DUMPED DU This causes each 36 bit word from the input
device to be converted to the ASCII
representation of the octal number it represents
and to then be sent to the output device. The
following format is used. A "word number" is
sent to the output device which indicates which
word in the file is the first word in this row.
Then 8 data words are transferred. Then a
<cr><lf> is inserted. If desired, a "page list"
may be used for /DUMP; however, the values are
those of word addresses in the file instead of
pages. However, if the /SEARCH switch appears
before this switch (or the DIRECTORY monitor
command was typed), this switch has a different
meaning: it includes in the directory listing the
date on which the file was last included in a
system DART dump, and the number of the tape on
which it was dumped. If the file has been
permanently dumped twice or more, the character
">" appears after the tape number.
*EVEN EV This sets mag tape transfers to even parity.
EXTRA=n EX Whenever a line feed is seen n extra line feeds
are put out; n must be an unsigned decimal
integer. If n=0 line feeds are converted to a
177 followed by a 21; this inhibits form ejection
at page boundaries on the line printer.
EXTRA≡n EX (Note "≡" not "=".) This switch, used with the
XGP only, sets the inter-line spacing to n raster
units.
FAST F All the names specified by the source term are
listed (no size or other info). This switch is
therefore much faster than /SEARCH.
FONT#n=file FON This switch is used when copying to the XGP to
select a font. Font number n (default is 0) is
taken from the specified file. The file
specification can include any of filename,
extension, and PPN; the defaults are
FIX25.FNT[XGP,SYS].
FOO FOO This switch is used to produce a file directory
listing meant to be read by various programs
rather than by a human being. The switch name
derives from the fact that the switch was created
for the benefit of layout and drawing programs
used in the design of the late, lamented SUPER
FOONLY computer.
FULL FU If /SEARCH is specified, this switch provides
more information than is usually given in the
directory listing; specifically, it implies
/UFDPRO, /TIME, /PROTECTION, /WRITER,
/REFERENCED, and /DUMPED. This switch does not
automatically imply /SEARCH.
GTOTAL G At the beginning of the execution of a term the
term is printed. At the end of the term, a line
is typed of the form
TOTAL= x.x n BLK pp%
where x.x is the size of the file in K and tenths
(if the file is smaller than 1K, the size in
words is typed instead), n is the number of disk
blocks allocated to the file, and pp is the
percent of the allocated space which is actually
used. This switch implies /SEARCH.
HEADER H This causes a header to be put out at what would
be the top of each page on the line printer. The
header looks like this:
DATE TIME FILNAM.EXT PPN PAGE N-M
The current date and time are used, N is the
logical page number (number of form feeds seen
plus one), and M is the physical page of that
logical page.
IGNI IGNI This causes input errors to be ignored (no
message).
IGNO IGNO This causes output errors to be ignored.
KILL K The input file is deleted after the transfer is
finished, even if the output filename is the same
as the input filename. If the 200 bit in the
file's protection code is on, COPY asks before
deleting the file.
LIST L This causes the names of the files transferred
during that term to be listed. If the input
device is the disk the ppn is also listed.
Non-directory devices will obviously list
nothing. The output will go to the "list term".
If the list term is absent, the output will go to
your terminal.
*MLENGTH=nnnn M This allows the user to specify nonstandard
length records for mag tape I/O, where nnnn is a
1 to 4 digit number interpreted in octal which
specifies the number of data words per record.
NONUMBERS N This deletes line numbers from files that have
them. This forces an ASCII mode transfer; in
fact, /NONUMBERS can be used on any ASCII
transfer. Do not use this switch on anything but
text files or you will be sorry.
NOFF NOF This suppresses output of formfeed characters.
It implies /ASCII, and can be applied to single
source files.
NOSPACES NOS This switch eliminates spaces at the end of a
line.
ODD OD This sets mag tape transfers to odd parity. This
mode is standard and is the default option.
OFFSET OF This switch implies /SEARCH, and causes the file
offset (in decimal) to be included in the
directory listing. The offset, if any, is the
number of "hidden" records at the beginning of
the file which will not normally be seen when the
file is read. See the UUO Manual for more
information about offsets.
OPTIMIZE OP This forces COPY to treat the file as one
produced by SOS, and to pack it by allowing lines
to span a record break as long as line numbers
are not the last word of a record. SOS will read
an OPTIMIZEd file, but will not write a record
ending with a partial line. A file which cannot
be read by SOS because of line numbers or page
marks at the ends of records will be "fixed" by
this switch.
PAUSE PA This switch is effective only for output to the
terminal. It causes output to pause before each
element of a page list if one is specified, e.g.,
for the command TYPE FILE(2,3:7,14) before pages
2, 3, and 14, or before every page if no page
list is used. It also pauses after the last
page, before typing EXIT. You must type RETURN
for the output to continue. The switch is
intended for typing documents on a hardcopy
terminal.
PROTECTION PR If this switch is preceded by /SEARCH (or used
with the DIRECTORY monitor command), it causes
the protection of the listed files to be included
in the listing and implies the /UFDPRO switch to
print the UFD protection and the UFD's default
file protection. Otherwise, it must be given
with a protection code and has a different
meaning, as in the following paragraph.
PROTECTION=nnn PR This causes the output file to have the
protection nnn, where n is a digit from 0 to 7.
All three n's must be present. This switch
applies only to disk output. If no protection
switch is specified, the protection of the input
file is used (for non-disk input 000 is used).
When concatenating files, the protection
applicable to the first file transferred is used.
QUIET Q This switch prevents you from getting the message
"FILE ALREADY EXISTS...." If the output file
already exists, it is deleted without a sound.
Also, if this switch appears with /SEARCH, then
only the ppn and the size on that ppn are
printed. This switch also prevents being asked
for confirmation when trying to delete a file
with the 200 bit on in its protection code.
REFERENCED REF This switch is like /SEARCH below, but includes
in the directory listing an extra column
containing the date on which each file was last
read (referenced by LOOKUP).
RENAME REN A rename is done on the input file with the
output file information. /QUIET applies when the
output filnam.ext already exists.
*SAVE SA If the output device is a mag tape, four words of
directory information are written. If the input
device is a mag tape, four words of directory
information are read and compared with the source
name specified. If they don't match, that file
is skipped and the next examined until a match is
found or the end of tape is reached.
SEARCH SE This switch overrides all other switches. It
gives you more information than /LIST and
suppresses any transfers. Added to the /LIST
information, you get the size of the file in 1K
blocks (or in words if less than 1K) and the date
it was last written. If you are at a Data Disc
or III display terminal, it also lists the time
when the file was written. The information given
can be further extended by the switches /FULL,
/TIME, /PROTECTION, /WRITER, /REFERENCED,
/DUMPED, and /OFFSET. (The offset will always be
listed if nonzero for a particular file.) If a
list term is specified, all of the possible
information is listed. The output goes to the
same place as with /LIST, with the following
variation: If the "list term" is omitted, the
listing goes to your terminal and the information
and heading for disk input will be truncated to
FILNAM.EXT, [PRJ,PRG], and SIZE. If /QUIET is
used with this switch and no list term was
specified, only the ppn and the total size of
each disk area is printed.
*SPOOL SP This is the same as /DSPOOL except that the
/DELETE switch is not used in spooling the file.
TIME TIM This switch implies /SEARCH, and causes the
directory listing to include the time as well as
the date when the file was last written.
TITLE TIT This causes a "title page" to be put out in large
block letters followed by a form feed. The title
is of this form:
FILNAM.EXT
PPN
TIME
DATE
The date and time are when the file was last
written. For non-directory devices, <device
name>: is printed in place of filnam.ext and ppn.
UFDPRO U This switch implies /SEARCH but also causes the
UFD protection and the UFD's default file
protection to be printed for each PPN for which a
header is listed. These two protection codes are
output on the PPN's header line in the following
form:
[PRJ,PRG] UFD PRO=405; DEF PRO=000
The /UFDPRO switch is implied by /FULL and by
/PROTECTION (in a DIRECTORY command or following
/SEARCH). To get just these protections typed
out (without listing any files), use
DIRECTORY [PRJ,PRG]/Q/F/U. Note that if the PPN
header is not printed, the UFD protection will
not be listed.
WAIT WA This switch will automatically wait for a busy
device (e.g., XGP) without requiring confirmation
by the user.
WRITER WR This switch includes the PPN and job name of the
last writer in the directory listing for disk
files. It implies /SEARCH.
Monitor Commands
The following is a list of the monitor commands which use COPY and how they
work. The syntax is the same as for COPY.
COMMAND EFFECT
DELETE This deletes all the files specified by the source term, and
types the space reclaimed as with the /GTOTAL switch. If
the 200 bit is on in the file protection key, you will be
asked if you really want to delete the file (/QUIET
overrides this feature). The destination term is
interpreted as the list term. The list term is therefore
illegal.
DIRECTORYThis gives you all or part of the file information for the
source term(s) (or *.* if no source term is used). If /L
appears anywhere in the command string the default list
device will be set to the line printer. The destination
term is treated the same as for DELETE.
LIST This sets the default output device to the line printer and
turns on the /HEADER switch.
PRINT This sets the default output device to the line printer and
turns on the /NONUMBERS and /TITLE switches.
RENAME This allows you to change the filename, extension, PPN, and
protection of a file. The format is newname←oldname. Use
/PROTECTION=nnn to change protection.
TRANSFER This copies files from one place to another and deletes the
source files.
TYPE This sets the default output device to your terminal.
XGPLIST This sets the default output device to the XGP.
Examples
COPY DTA4:←*.*
This would cause all the files on your disk area to be written on DTA4.
COPY ←DTA4:*.*
This would cause all the files on DTA4 to be written on your disk area.
COPY <filnam.ext>/NONUMBERS
This would delete sequence numbers (if any) from the file indicated.
COPY [2,RPH]←*.*[1,RPH]
This would cause all the files on 1,RPH to be copied onto 2,RPH no matter
who you are logged in under (subject to file protection failure).
TYPE <filnam.ext>
This would cause the specified file to be listed on the terminal you are
logged in on.
LIST <filnam.ext>(2)/NONUMBERS
This would cause page 2 of the specified file to be listed on the line
printer with headers and without line numbers.
DIR LPT:←*.TXT[*,*]
This would cause the filnam.ext, ppn, size, etc. for all files in the world
with the extension TXT to be listed on the line printer.
COPY FOO←TTY:,FOO/ASCII
This would allow you to add text at the beginning of the file FOO (/ASCII is
mandatory).
RENAME FOO/PROTECTION=077
This would change the protection of the file FOO to 077 without doing a
transfer.
PRINT FOO
This would cause the file called FOO to be listed on the line printer
without line numbers and with a title page.
DIR[*,RPH]/QUIET
This will tell RPH the size of each of his areas without printing the
filenames and other information.
COPY TEMP←↓$ED$09↓.TMP
This copies the file $ED$09.TMP into TEMP so that you can edit it. (These
names are created by SOS.)
DELETE @DEL
This would use the file DEL as a list of files to be deleted. This method
is very good for "cleaning" your area.
DIR FOO/WRITER
This would list the standard directory information for file FOO along with
the PPN and job name of the job that wrote the file.
A3 SPOOL
This description of the SPOOL commands is taken from the SPOOL manual,
SPOOL.REG[UP,DOC].
Spooling provides a method of producing line printer listings of files
without the usual disadvantage of tying up a user's job while the listing is
actually being done.
To use the spooler, a user must create commands for it. A command is the
name of a file to list, and control switches. Spooler commands are created
by the monitor commands SPOOL and XSPOOL.
As an example of spooling, the monitor command
SPOOL SPOOL.REG[UP,DOC]
will cause the LPT spooler to list the file SPOOL.REG[UP,DOC].
Spooled listings are preceded by a title page (except see /NOTITLE below),
used to make it easy to separate different listings. This title includes
the file identifier, the name of the requestor and his project-programmer
name, the current date and time, and the date and time when the file was
last written. Programmer names are read from the file FACT.TXT[SPL,SYS].
Project names (of which there are few) are read from the file
XFACT.TXT[SPL,SYS].
In the discussion below, "SPOOL" is used to mean either the command SPOOL or
the command XSPOOL, except as noted. SPOOL makes requests for the LPT
spooler; XSPOOL makes requests for the XGP spooler.
To have the spooler make a listing the user must tell the spooler what
file(s) to print. This easiest way to tell the spooler what to do is by the
monitor command SPOOL. This command consists of the word SPOOL followed by
the name(s) of the file(s) to be listed. File names are separated by
commas. Each file name may be followed by switches, explained below. The
program SPOOL will send commands to the spooler.
Files to be spooled are specified in the conventional way, by file name,
extension, and optionally project-programmer name. If no extension is
specified, and the given file name does not exist with no extension, then
.LPT and .XGP are assumed for SPOOL and XSPOOL.
Asterisk, *, may be used to allow matching of any file name, extension,
project name, or programmer name. (RPG, DMP, and REL files will not be
matched by * in the extension).
Switches are allowed either preceding or following the file name. Switches
that precede the name are sticky and will be applied to subsequent names. A
switch consists of a slash, the switch name, and sometimes, a parameter.
For example, /REPEAT=5.
The following switches are available. Note that most switches occur in two
senses (e.g., /DELETE and /NODELETE). This allows an explicit switch in
some term to override a sticky switch.
Switch Action
DELETE DELETE this file after printing. The file protection
NODELETE of this file must be low enough so that the spooler
can delete it.
NONUMBER Omit SOS line numbers from the listing. "N" is an
NUMBER accepted abbreviation for NONUMBER.
FORTRAN The first character of each line is interpreted as a
NOFORTRAN FORTRAN carriage control character.
LPT100 The spooler will open the LPT in mode 100, instead of
LPT0 the usual mode 0. This changes some character codes.
HEADING Print a page heading at the top of each page. "H" is
NOHEADING accepted as HEADING. HEADING is the default for all
files, except:
LST or DOC extensions,
any file from any area with programmer = DOC.
The heading includes date, time, filename, and page
numbers.
TITLE Precede the listing with a title page. TITLE is the
NOTITLE default for all files.
NARROW Center the title page to fit an 8.5 inch wide page.
NONARROW
RECOPY Copy the file to [SPL,SYS] and list the copy. This
NOCOPY allows the file to be edited while the listing is in
progress.
REPEAT=n Make n copies of the listing. (REPEAT is NOT sticky.)
EXTRA=n Insert n extra line feeds in the listing after every
line feed in the file. (EXTRA is NOT sticky).
DUMP Octal listing. Data will be printed as octal full
NODUMP words. (OCTAL is an equivalent switch.)
NOFF Each line feed in the file is translated to '177&'21
FF which causes single spacing with no form-feed between
pages.
NOWARN Suppress "spooling done" typeout after listing.
WARN
ASK Before making the spool command, SPOOL will type the
file name and wait for the user to answer with "Y" to
spool the file. (This is useful with *.* terms).
HOLD=hhmm The listing will be held in the queue until the time
specified by hh hours, mm minutes. (24-hour time is
assumed.) If hhmm is prior to the current time, hhmm
tomorrow is assumed.
MODE=n Open the file in mode n (n is octal).
QSPOOL Type a listing of the LPT or XGP spooler's status and
queue after entering the request.
File specifications may be read from an auxiliary file by including in the
command line the name of the auxiliary file preceded by @. This file may
include file names and switches.
Delayed Listing
Usually requests for spooled listings will be processed as rapidly as
possible. Under some circumstances this may not be desired. For example, a
long listing impacts the normal operation of the system by making the line
printer unavailable during its duration. The spooler allows users to delay
such listings until a time of minimum loading (e.g., 0500) when the
unavailability of the line printer is less likely to interfere with other
users.
If the construction /HOLD=hhmm appears in a command line then hhmm is
interpreted as the (24 hour) time of day when the listing should actually be
sent to the line printer. In the example below, 1730 will be interpreted as
5:30 PM.
Example:
SPOOL SYSTEM.LST[S,SYS]/HOLD=1730
If the time specified is smaller than the current time, it is interpreted to
mean, "list the file tomorrow at the time specified." That is, if at 10PM
you give the command:
SPOOL BAZ.FAI/HOLD=400
then the listing will occur in six hours.
Page Selection
You may follow a file name by a list of ranges of pages that you want
listed. The list must be parenthesized. For example:
SPOOL FOO.SAI (1,7,5:8)
will cause page 1, page 7, and pages 5 through 8 inclusive to be listed.
Page ranges are never sticky.
In octal dump mode, this page range list is used to specify a word range to
list.
Multiple Copies of a File
The REPEAT switch (/REPEAT=n) is accepted by SPOOL. The effect is to
interpret n as a decimal number and to list that many copies of the file.
Multiple copies are spooled as usual, except that the two pages of heading
that normally precede a file (except if the /NOTITLE switch is used) are
suppressed on the second and subsequent copies of the file.
A3.1 XSPOOL Special Features
The XSPOOL command is quite similar to the SPOOL command. The XGP has
greater flexibility than the line printer, so more parameters can be
specified in the XSPOOL command.
The following switches are legal only in the XSPOOL command:
FONT#n=f n is a number from 0 to 127 decimal. f is a file name. The
XGP spooler will use the font named f as font n when
spooling. If #n is omitted, n=0 is assumed. Up to 16 font
select switches are permitted. The defaults for filename,
extension, and PPN are GACS25.FNT[XGP,SYS]. See partial
font loading below.
LMAR=n Set left margin to column n. Columns in the XGP are
numbered from 0 to 1699 (approximately). The left margin is
the column which the carriage return character selects.
RMAR=n Set right margin to column n. If the XGP is going to write
a character that exceeds this margin, a new line will be
started.
TMAR=n Set the number of blank scan lines between the top edge of
the page and the first line of text.
BMAR=n Set the number of blank scan lines between the bottom of the
text and the bottom edge of the paper. (The monitor
interprets BMAR=0 to mean no paper cutting.)
PMAR=n Set the number of scan lines in the page body. Text is
written inside this area. (The monitor interprets PMAR=0 to
mean that the end of a page body is signalled only by a form
feed in the file, for variable-length pages. This is true
only if BMAR≠0.)
XGP The first page of the file is taken as font and margin
commands, preceded by slashes as in the command line. Only
the special XGP spooler switches (the ones in this table)
are allowed. Carriage returns are ignored. If the first
page of the file is an E directory, the second page is used
for the commands. The command page is not printed. A file
extension of .XGP also invokes this feature.
NOXGP Turns off /XGP.
XLINE=n Set the minimum interline spacing to n scan lines.
NTNODE=n Set the number of text nodes allocated by the monitor (see
below).
NVNODE=n Set the number of vector nodes allocated.
Text nodes and vector nodes are units of core storage allocation used by the
monitor's XGP service routines. Generally, you need not worry about them,
but if you have trouble printing a complex document the allocation control
switches may be able to help you. See a system wizard to find out.
The /XGP switch, when present, turns off the usual default assumptions about
other switches; in particular, /HEADING is not assumed unless it is
explicitly used. Spooling a file with extension .XGP implies a default of
/NONUMBER as well as /XGP.
More peculiarities:
If any FONT select switch specifies some font number other than 0, no
/HEADING switch will be assumed unless it is explicit.
Page headings will occur in font#0. Whatever font was in effect before the
heading line will be reinvoked before any further processing. The title
page, if present, will be made in font#0.
The title page will contain any page specifications and format-affecting
switches (e.g., /HEADING but not /REPEAT) which came from the XSPOOL
command.
Partial font loading: A font select switch of the form /FONT#n=file=charss
is permitted in a /XGP file header to tell the system font compiler to load
only the characters in the string charss from this font. The string is
terminated by the first character which appears twice in a row (including
null). The terminating character is included in the ones to be loaded.
This switch is useful if a document needs just a few characters from many
different fonts, and the complete fonts would be too big for the amount of
core storage available to the font compiler.
An additional switch, /USETI=n, is also allowed only inside a disk file when
/XGP is in effect. It indicates that no more switches are on the current
page (which is the first page of the file, or the second if there is an E
directory), but that more switches can be found starting at record number n
(decimal) of the file. No text in or after that record will be printed.
The switch is meant for one-pass document compilers which want to use the
partial font loading feature but don't know until after writing the output
file what characters will be needed.
Suspended XGP listings: The XGP spooler sometimes breaks a long listing into
two or more parts in order to let shorter listings through without their
having to wait until the long listing is completely finished. Thus it is
not necessary (or desirable) for users to break up long XGP spooler requests
into pieces.
A listing being made with BMAR=0 (no paper cuts) will never be suspended.
For all other listings, the spooler uses the following rules to decide
whether or not to suspend the current listing:
The spooler only considers suspending a listing when a formfeed (pagemark)
is encountered in the input file. To avoid suspending a listing that was
about to finish anyway, the spooler will not consider breaking a listing
that is within two records of the end of the file.
When a formfeed is encountered with more than two records left in the file,
the spooler checks to see if the "guaranteed unbreakable" minimum amount of
paper has been output for the current listing. This minimum is currently 25
normal-size (11-inch) pages. Note that the spooler actually checks the
amount of paper spewed out, not the number of pages. If less than the
minimum paper has been output, then no break is considered and the listing
continues.
Then the XGP spooler checks to see if anyone is in the device-wait queue
(DWQ) waiting for the XGP. If so, the current listing is suspended and the
spooler releases the XGP.
If no job is waiting for the XGP, the spooler checks to see if 50 formfeeds
have been output since the last time it checked the priorities of spooler
requests. (The spooler of course checks priorities before starting a
listing.) If not, the listing continues. If so, then the spooler re-checks
the priorities of all the XGP spooler requests. In making this check, the
priority of the request in progress is figured based on the amount of the
input file that is left, not on the total size of that file. If the current
listing still has the top priority, then it is continued, although a page or
two of blank paper may have come out of the XGP while the spooler was
thinking. If the current listing no longer has the highest priority, then
it is suspended and the new top priority task is started.
When a listing is suspended, the requestor's TTY will get a message and the
last page of XGP output will be a short piece of paper indicating that the
listing was suspended and giving the page number at which the suspension
came. When the listing is resumed, another TTY message is sent.
When the XGP stops working for some hardware reason (out of paper, KA-10
down, etc.) the current listing is suspended, and will be continued when the
XGP is ready again.
A3.2 QSPOOL Command
The QSPOOL command starts the SPOOL program in a special way. QSPOOL reads
the directory of [SPL,SYS] and interprets the contents of the SPX and XSP
(spooler command) files. Essentially, it displays the queue of files to be
printed.
The commands QSPOOL/LPT and QSPOOL/XGP will list spool requests only for the
indicated device.
The queue is based on a priority scheme. The priority of a spool request is
determined by:
(time in minutes since spool request + 1) / (file size in records)
Requests are processed in the order of decreasing priority. (The priority
of a suspended XGP listing is based on the number of records remaining in
the file, rather than its total length.)
The QSPOOL command may be given without logging in.
QSPOOL will display the queue status repeatedly (every 15 seconds) for 3
minutes or until exited by typing RETURN if run on a display terminal. On a
non-display it just types the information once. The command QSPOOL/TYPE
will type the information once even if at a display.
While the queue display is being updated every 15 seconds, the updating will
continue for about 3 minutes after any command before automatically
stopping. Typing BREAK I will make the updating continue for about 30
minutes, and typing ESCAPE I will make it stop in 3 minutes.
The commands you can give while the queue(s) are being displayed are:
ALT Update the display immediately without waiting 15
secs.
RETURN Terminate the displaying (exit if came from monitor
cmd).
LINE Same as RETURN
αβE Same as RETURN
<switches>RETURN Select particular mode(s) and continue. One or more
switches can be included. When any switches are
given while displaying the queue(s), the default is
to resume outputting both queues (hence the
significance of the /DISPLAY switch below). Also,
the normal 15 second delay is suppressed when any
switches are given; the display will be updated
immediately (unless /TYPE was given). Here are the
available switches:
/DISPLAY Display the queues; given alone, this switch
displays both queues.
/TYPE Type the queues; given alone, this switch types both
queues.
/XGP Output only the XGP queue.
/LPT Output only the LPT queue.
/ALL Output the [SPL,SYS] command file name for each
queue entry.
Any switch may be abbreviated to just one letter after the slash, but giving
an illegal switch will terminate the display.
Note that it takes only half as long to evaluate a single queue being
displayed as it does to evaluate both queues. This means that the display
will appear sooner if you are asking for only one queue (e.g., /XGP).
A3.3 UNSPOOL Command
UNSPOOL is a monitor level command that invokes the program SPOOL. If you
run UNSPOOL, it will display all the spooler requests that you (your PPN)
have requested, and it will allow you to delete any of them. If you delete
a request which hasn't been seen by the spooler, then nothing special
happens since the spooler is not yet aware of the command, so it won't be
missed. If it happens that the spooler is already processing your commands,
then the listing in progress will be purged.
If you give the command UNSPOOL/ALL, or if you give the command REENTER
after UNSPOOL exits, then not only are you allowed to purge any command file
that is either in progress or pending but you also can change the spooler
behavior in the following ways:
1. You can cause the present listing to be purged.
2. You can cause the present listing to be started over.
3. You can cause the spooler to hold the queue and release the LPT or XGP
immediately before starting the next file.
4. You can release the queue from the state induced by holding it.
5. You can cause the XGP spooler to consider suspending the current listing
at the next page mark, even if its guaranteed minimum page count has not
been met.
The commands UNSPOOL/LPT and UNSPOOL/XGP will list and delete spool requests
only for the indicated device.
A4 MAIL
The information in this appendix is taken from the files MAIL.BH[UP,DOC] and
RCV.BH[UP,DOC], the manuals for the MAIL and RCV programs. See also
E.ALS[UP,DOC] on the use of E in reading mail files and sending messages.
The MAIL program
The MAIL program is used to send messages to users and sometimes to
arbitrary disk files for special purposes. The program is invoked by one of
several monitor commands, depending on the function desired:
MAIL send a message to one or more message files
SEND send a message to the terminals of one or more users
GRIPE send a message complaining about a system problem
REMIND schedule a message to be sent at some later time
PLAN create a file describing how to find you when not logged in
EVENT send a message to all users about an event on a given date
BATCH schedule the execution of a command string at some later time
LATER schedule the execution of a given program at some later time
RETRY send any messages which were queued by earlier failing operations
The commands MAIL, SEND, and GRIPE may be given when not logged in, so that
people who are not authorized users of our system can use them to
communicate with us. A user who is not logged in will be asked for his
name, which will be included in the header of the message. However, users
who are not logged in may not use wildcard (send to all users) or ARPA
network destinations.
The commands MAIL, SEND, and REMIND require a list of destinations
(recipients of the message). All of the commands except LATER and RETRY
require some message text and also can be modified by the use of certain
optional switches, either applied globally (all destinations) or just to a
particular destination. The commands REMIND, PLAN, EVENT, and BATCH all
require a date and/or time which can be included by itself or in a global
/DATE or /TIME switch. (Any date given must appear before any time given,
whether in switches or not. See the section below on dates and times.)
GRIPE takes a single-word gripe topic, e.g., GRIPE MAIL to report a problem
with the MAIL program. This will be more fully explained on page 102.
LATER takes up to four specific arguments which describe the program to be
run and when it is to be run; these will be described on page 106.
RETRY takes no arguments at all; it merely looks for queued mail originating
from the current user and tries once again to send each such message (this
will be done automatically if RETRY is not used).
The normal command syntax includes all necessary information on one or more
lines without prompting. There is an alternative format, called
hand-holding mode, in which each piece of information required is prompted
for separately. Hand-holding mode is more verbose and time-consuming to
use, but may be less confusing to new users. It is invoked by typing just
the command of interest without any arguments, and will be described in a
separate section. What follows here assumes that the normal syntax is being
used.
Before explaining the complete range of command options, here are a few
sample commands:
SEND BH Want to have dinner?
This is a very simple example of a command with one destination and no
option switches. It types the message "Want to have dinner?" on BH's
terminal if he is logged in, along with a header indicating who sent the
message. If BH is not logged in, MAIL asks if the message should be mailed
instead of sent.
MAIL/DIST @NL Language group meeting Tuesday at 3pm.
This command mails the message "Language group ..." to the mail files of the
users listed in the file NL.DIS or NL or NL.DIS[P,DOC] (the [P,DOC] file
directory contains lists of users by project group). The first file in that
list which exists is used. The message will include the standard header
indicating who sent the message and when, and also (because of the /DIST
switch) a line indicating to whom the message is being sent.
REMIND/DATE=10-*-* . Rent due tomorrow
This command reminds the user who isssued the command (because of the "."
destination meaning self) to pay the rent on the tenth day of each month of
every year. The reminder is both mailed and sent each time, and expires
after 50 times. (These are default conditions modifiable by switches.)
A4.1 Command Format
The command format for all MAIL commands except LATER and RETRY is shown
below. The formats for the LATER and RETRY commands are explained in the
sections on those commands beginning on page 105.
<command & global switches> <destinations & local switches> <message>
The <destinations & local switches> part only applies to the MAIL, SEND, and
REMIND command. Destinations and destination lists will be described in the
next section. There are no destinations for the BATCH command. EVENT and
PLAN have implicit destinations, and GRIPE uses a gripe topic as a form of
destination, but not in the format of MAIL, etc.
The message text can be provided in any of three ways: (1) a one-line
message can be included after the destinations on the command line and ended
with <CR>; (2) if no message specification is given on the command line (or
the same line as the last destination for a multi-line command), MAIL asks
for a message to be entered from the terminal, ending with the end-of-file
character (<CONTROL><META><LF> from a Stanford display terminal or local
PTY, <control>Z otherwise); (3) if the notation
@file.ext[prj,prg]
is used on the command line after the last destination, the message text is
taken from the specified file. If no extension is typed, the extension .TXT
is tried first, and then a blank extension. To force the use of a filename
with no extension, type the dot but no extension, for example:
@file.[prj,prg]
The file may contain an E directory or SOS line numbers, which will not be
included in the message.
If something not starting with "@" follows the destination list on the
command line, it is taken as the message text. This makes single-line
messages more convenient to enter. If you start to enter a single-line
message, and decide you need more than one line after all, end the command
line with <LF> instead of <CR> and you will be allowed to continue the
message on later lines.
When entering a message, the usual line editing facilities are available.
In addition, if the <bs> key is typed when the input line is empty (i.e., at
the beginning of a new line), the last line typed is loaded into the line
editor (Stanford displays) or input buffer (non-displays) and the cursor is
positioned at the end of that line. The text of that line is deleted from
the accumulated message. The effect is that a carriage return can be
deleted by <bs> like an ordinary character. It is possible to back up
another line by doing another <bs> after clearing the newly reloaded line.
This procedure destroys the lines that followed the one to which you back
up, and the backup is only possible for a small (about 30) number of lines.
When entering a message from a Stanford display terminal, a better facility
is available for correcting errors in the command or in the message more
than one line before the current line. Typing <CONTROL><META>E at the end
of a line of message text will cause a file called MAIL$E.TXT to be written
on your login disk area (not alias) with the command, switches, and
destination list that you gave on page 1, and the message text up to the
<CONTROL><META>E on page 2. Then E is run automatically on this file to
allow you to edit the text and/or command. E will start up pointing at page
2 of the file, but you can modify the command or destinations by editing
page 1 (there will be no directory page). When you are finished editing the
message and command, type to E the command <CONTROL>XRUN to restart the MAIL
program automatically and send the message as edited. The MAIL$E.TXT file
is automatically deleted after the message is sent. Note: if you
accidentally or purposefully exit from E without saying <CONTROL>XRUN, you
can still send the message from MAIL$E.TXT by simply editing that file with
E (using /R if you don't need to further edit the message or command) and
then giving E the command <CONTROL>XRSYS MAIL, which will run MAIL to send
the message and delete the file.
The character <CONTROL><META>E cannot be typed on the MAIL command line
itself, because control characters are not allowed in monitor commands.
Therefore, on the command line only, the character <altmode> will start
running E.
The character <altmode> cannot appear in a message (because it is a line
editor activator and would confuse some mail-reading programs). If an
altmode is seen in the message text as input (other than on the monitor
command line), it is changed into a dollar sign ($). Also, the character
<formfeed> cannot appear in a message (because it would mess up the E-format
of mail files). If a formfeed is seen in the message text as input, it is
changed into an exclamation point (!). Finally, the character <bs> cannot
be part of a message text. This is not a problem if the message is entered
from the terminal, because <bs> is interpreted as a line editor command, but
if a <bs> is seem in a message text file, it is changed into a lambda (λ).
If the /SUBJECT switch is used to include a subject line in the message
header, the subject is taken from the first text line entered: for a file,
the first line of the file is the subject; what would otherwise be a
single-line message is taken as the subject line for a multi-line message to
follow. If no message is provided on the command line, you are prompted for
a subject line and then for the message text.
Destinations and Destination Lists
The commands MAIL, SEND, and REMIND require one or more recipients, or
destinations, specified in a list called the destination list. The
destinations should be separated by commas. The list may extend over more
than one line if the lines before the last end with comma. (Any characters
from a semicolon to the following linefeed are ignored.) The following
types of destinations may be used:
prg programmer name of local user
. yourself
* notice for all users
name real name (or leading substring) of local user
name % host user at another ARPA network host
% host sticky ARPA network host to be used for following names
#fil.ext[pj,pg] (MAIL only) arbitrary file to receive message
TTYn (SEND only) terminal to receive message
n (SEND only) job number to receive message
@fil.ext[pj,pg] file containing destination list
ARPA* (SEND only) all users logged in via ARPA network
The form "prg" in the above list must be one to three letters and digits,
the first of which is a letter (upper and lower case letters are
equivalent). The forms "name" in the above list must consist of either any
number of letters, digits, and hyphens, starting with a letter, or of
arbitrary characters enclosed in quotation marks ("...") or downarrows
(↓...↓). In the SEND command, the TTYn form may optionally be followed by a
colon.
ARPA network hosts are specified by host name (letters, digits, and hyphens
starting with a letter) or by decimal host number. If the host name is used
it can be abbreviated by enough characters to identify it uniquely. Many
hosts have short nicknames recognized by the network programs at Stanford.
Mail will only be sent to a host specified by name if the host is listed in
our host table as a server (that is, a host which accepts incoming
connections).
A host may be specified for a single destination, using the "name%host"
notation, or a sticky host may be specified by just "%host". A sticky host
will apply (until another sticky host is specified) to all following
destinations that start with a letter or a quote character and which do not
have a host specification themselves. A host name of SU-AI (or SAIL) will
override a sticky host but will not actually send the message via the ARPA
network.
There is an ARPA network protocol for implementing the SEND command to a
remote host. However, most hosts do not implement it. Most notably, it
works to the ITS systems at MIT and the TENEX systems at SRI. Certain other
hosts also accept this protocol, but not very many. The MAIL program will
attempt it to any server host, but it generally won't work.
More information about ARPA network mail will be given in a later section.
In the #file construction, if no extension is given the default extension
of .MSG is used. To mail to a file with no extension, you must type the
filename in the form "#file." with no extension after the dot.
In the @file construction, if no extension is given the default extension
of .DIS (distribution list) is tried first. If that file does not exist,
then the null extension is tried next (both of these on your current alias
disk area unless you gave an explicit PPN). If neither of these exists,
then the extension and disk area .DIS[P,DOC] is tried (unless you gave an
explicit PPN). The [P,DOC] directory contains several distribution lists
derived from the laboratory personnel directory. For example,
SEND @VB Time for volleyball!
will send that message to all known volleyball players as listed in the file
VB.DIS[P,DOC] (see LES to be added to the list). Distribution list files
may contain E directories or SOS line numbers. Only the first page (second
page if in E format) is read. Everything on that page will be interpreted
as destinations even if not properly separated by commas. (The semicolon
format for comments will work.)
For the MAIL command, if there is a file called OUTGO.MSG in your login (not
alias) directory, it is automatically included as a destination for the
message. This provides a simple and automatic method for saving a copy of
each message you MAIL to anyone. The /-OUTGO switch can be used to prevent
sending a copy to your OUTGO.MSG file.
MAIL cannot be sent to local users who do not have file directories.
However, if you must MAIL a message to a programmer name that has no file
directories, you can do
MAIL #" prg".MSG[2,2]
to mail explicitly to the message file of programmer name "prg" (prg should
be right-justified in six quoted spaces).
The check for syntax validity and existence of local users is made as soon
as the destination list is read. If some but not all of the destinations
are valid, MAIL asks whether or not it should proceed using the valid ones.
If you want to correct a mistake in a destination (or in a switch or in some
part of the message already typed) before sending the message, answer no to
the query and then use the monitor command REENTER, as explained on page
108.
For the SEND command with a multi-line message (so the destination list is
read before the message has been entered), a warning message is given if any
programmer name recipient is not logged in. This warning does not require
reconfirmation before the command is executed.
For people who want to send mail to people listed in a file designed for use
by SNDMSG at a TENEX site, which requires a different syntax, the /ARPA
switch can be used to cause distribution list files to be parsed
differently, including the use of "@" to indicate a network host name.
Obviously nesting of distribution list files is not possible within such a
file. See the description of the /ARPA switch below for more details.
Message Formats
Messages are usually sent preceded with a special header which tells who
sent the message and when it was sent. This header takes three forms: one
for messages being typed out on terminals (SEND command), another for local
(SU-AI) mail files, and a third for messages sent out over the ARPA network.
The header may be followed by an optional distribution list (explained
below). After the distribution list (if present), the message text is sent
followed by a blank line (unless the message already ends with a blank
line). SEND leaves off the extra blank line when typing the message on
terminals.
The header used for local files starts with a partial sign to facilitate
detection of the beginning of each message by various message editing
programs. To ensure that trouble is not caused when a partial sign actually
occurs in a message, any partial sign that occurs as the first character in
any line of a message is indented by one space, whether or not the message
is going only to local files.
Here are examples of the first two header formats:
;; Message from ME at TTY46 0032 Records
∂23-Dec-75 0032 ME Records
The SEND header (first above) contains the sender's programmer name,
terminal number, the 24-hour time of sending, and then the subject (if any).
If the sender is at a Data Disc terminal, the header contains the number of
the responsible physical terminal as well as the TTY number.
The local file header (second above) contains a partial sign followed by the
date and the time of day, then the sender's programmer name and the subject
(if any). The local file header can be suppressed by use of the /-HEADER
switch (see the section on switches below). However, this switch is not
recommended for general use when mailing to users' message files since it
causes the message to be sent without any identification about who sent it
or when it was sent; in fact, it effectively causes the message to be
appended to some other message in the file. This switch is useful, however,
when mailing text to a special file which is simply to contain message text.
In both the SEND header and the local file header, if the sender was logged
in via the ARPA network at the time of sending, the phrase "via host" will
follow the sender's programmer name, where "host" is the name of the host
from which the sender was connected to Stanford. The name preceding the
"via ..." is, nevertheless, a Stanford programmer name.
If the sender is not logged in, his programmer name is 100 and he is asked
to supply his real name, which is included in the header.
If the message was sent to all users by a SEND * command, a "to *" phrase is
added to the header line to make it look like this:
;;Message to * from ME at TTY46 0032 Records
Finally, if the message if being sent as a reminder (see the REMIND
command), then the programmer name in the header will be followed by an
asterisk (*) as in these examples:
;; Message from ME* at TTY46 0032 Records
∂23-Dec-75 0032 ME* Records
Now, here is a sample header for messages sent out over the ARPA network:
Date: 23 Dec 1975 0032-PST
From: ME at SU-AI (Martin Frost)
Subject: Records
To: rmf at MIT-ML
The network header contains the date and time, the sender's real name as
well as his programmer name, the subject (if any), and the distribution list
(list of recipients of the message, starting "To:"). There is a new mail
header standard in the works, which calls for lots of useless garbage like a
supposedly-guaranteed-unique message ID line to help the bureaucrats or the
CIA or someone like that keep track of the message; we don't supply that.
The distribution list can be omitted from network mail by use of the /NODIST
switch (see the section on switches below) and can be included in local
messages (MAIL or SEND) by use of the /DIST switch. Note that /NODIST
applies only to network messages and /DIST only to local messages. For
messages MAILed to two or more destinations, a global /DIST switch is
assumed unless a global /-DIST switch is given. The distribution list may
use more than one line if lots of destinations were specified. Also, some
destinations may be listed on lines beginning "CC:" instead of "To:"; such
destinations are considered secondary recipients of the message and are
specified by use of the /CC switch.
Normally, if a distribution list file was used to specify the recipients of
the message, a distribution list included with the message will contain only
the name of that file, not the actual recipients listed in it, to avoid very
long distribution lists. The /LIST switch (see the section on switches
below) will list in the message the individual recipients named in the file.
Message File Formats
When mail is sent to a file which already exists, the beginning of the file
is read to see if it contains an E directory. If so, the message is added
at the end of the file preceded by a formfeed so that the message will be on
a new page. The directory is not updated to reflect this new page, but the
formfeed will be at a record boundary, so that when the file is next edited
with E, the directory can be updated without reformatting the file. If the
file does not already contain an E directory, the message is added at the
beginning of the file without any formfeed. In this case, record boundaries
are not necessarily preserved. The /APPEND switch will cause the message to
be added at the end of the file along with a formfeed as if there had been a
directory. The /-HEADER switch which omits the local mail header also omits
the formfeed which would have just preceded the header in E format files.
When a message is sent to a file which did not formerly exist, the file is
created with an initial E directory so that subsequent messages will be
added at the end of the file. The switch /-E can be used to omit this
directory normally inserted for a new file. However, this switch and its
inverse /E will be ignored for user message files (*.MSG[2,2]) and for user
plan files (*.PLN[2,2]). New user message files always get an E directory;
user plan files never do.
The command MAIL #LOGOUT can be used to send a message to the file
LOGOUT.MSG, which will be typed and deleted automatically when you log out
(and have no other jobs still logged in). This file is created /-E
automatically.
Command Switches
Various switches can be specified in the command line to modify the
operation of the MAIL program. Some apply only globally; these may appear
either just after the command name or after an individual destination.
Other switches can be applied either globally (by appearing just after the
command name) or to a particular destination (by appearing just after that
destination). A switch applied to a particular destination overrides a
global switch. Switches may appear at the beginning of a distribution list
file, in which case they apply globally to all destinations within that
file. Switches appearing with the @file destination format override
file-global switches at the beginning of the file.
A switch name may be abbreviated by enough characters to identify the switch
uniquely. All switches are available in positive and negative senses (e.g.,
/LIST and /-LIST) except for the following switches which are not available
in the negative sense: /CC, /DATE, /TIME, /COUNT, and /ARPA; also, the
switch /-OUTGO is available only in the negative sense. The default value
for most switches with a negative sense is the negative sense; the /HEADER,
/E, and /QUEUE switches are the primary exceptions, but in addition the
/SUBJECT and /DIST switches can be implied by the command.
Here are the available switches:
Switch Meaning of positive switch sense
/NOMAIL (SEND only) Do not mail the message to a destination programmer
name if the user is not logged in. Suppresses the question
about such mailing.
/YESMAIL (SEND only) Do mail the message to a destination programmer
name if the user is not logged in. Suppresses the question
about such mailing.
/MAIL (SEND only) Mail the message to a destination programmer name
as well as sending even if the user is logged in. Suppresses
the question about mailing of SEND messages which would be
asked if a destination programmer name were not logged in.
(Note that this switch has a different meaning for the REMIND
command--see below.)
/MAIL (REMIND only) Do not send the reminder to the destination
programmer name when the time comes, only mail it. Normally
reminders are both mailed and sent. (Note that this switch has
a different meaning for the SEND command--see above.)
/SEND (REMIND only) Do not mail the reminder to the destination
programmer name when the time comes, only send it. Normally
reminders are both mailed and sent.
/DIST Include the list of destinations in the text of the message for
local recipients (see message format in a previous section). A
global /DIST is implied by the MAIL command when two or more
destinations are given unless a global /-DIST is specified.
Compare /NODIST below.
/NODIST Do not include the list of destinations in the text of the
message for ARPA net recipients (see message format in a
previous section). This switch is not the inverse of /DIST!
/NO This is equivalent to /NOMAIL for the SEND command and to
/NODIST for the MAIL command, so that /N can be used to
abbreviate the appropriate switch.
/CC List this destination and all after it as secondary (CC)
recipients (see message format in a previous section). This
switch implies /DIST unless a global /-DIST is given.
/SUBJECT Include a subject line in the message. The effect of this
switch is always global. /SUBJECT is implied by the MAIL and
GRIPE commands unless some message text or the name of an
indirect message file or the /-SUBJECT switch appears on the
command line. However, typing just <CR> to the "Subject:"
prompt will omit the subject from the message. Subjects are
useful in local mail files because the first line of each page
(usually the header line of a message) appears on the directory
page in an E-format file, and for local files the subject is
included in the header line and thus in the directory.
/WHERE (MAIL and SEND only) Type the WHO line of each job that is
logged in under a programmer name included in the destinations.
/QUEUE Queue ARPA network mail for later delivery without first trying
to send it immediately. The first attempt (by the remind
phantom) to send such queued mail will happen right away. This
switch defaults on, but affects only the MAIL command; network
SENDs are done while you wait.
/APPEND (MAIL only) Put the message at the end of the file instead of
the beginning even if it has no directory. A formfeed will
precede the message (unless /-HEADER was given).
/LIST List the destinations specified within a distribution list file
as well as the file itself in any distribution list included
with the message. For REMIND, /LIST implies /EXPAND.
/HEADER Include the header line in messages mailed to local files. See
message formats in a previous section. Unlike most switches,
the default for this switch is on.
/E Include an E directory if creating a new message file. The
default for this switch, like that for /HEADER, is on. See the
section above on message file formats.
/DATE (REMIND, PLAN, EVENT, and BATCH only) This switch is used in
the form /DATE=<date> and sets either (1) the delivery date for
a reminder, (2) the expiration date for a plan, (3) the
occurrence date of an event, or (4) the execution date for a
batched command sequence. Reminders, events, and batch
executions can also be given a time (see /TIME switch below),
but any date must be specified before any time is. For the
<date> formats accepted, see the section below on dates and
times.
/TIME (REMIND, EVENT, and BATCH only) This switch is used in the form
/TIME=<time> and sets either (1) the delivery time for a
reminder, (2) the occurrence time of an event, or (3) the
execution time for a batched command sequence. Reminders and
batched executions can also be given a date, and events must be
given a date; see the /DATE switch above. If /DATE and /TIME
are both used, /DATE must come first. For the <time> formats
accepted, see the section below on dates and times.
/COUNT (REMIND and BATCH only) This switch is used in the form
/COUNT=<number> and sets the expiration count for a reminder or
a batched command sequence. This count is only relevant if the
command contains a wildcard date. See the section below on
dates and times.
/EXPAND (REMIND only) This switch applies only to destinations of the
form @file. It causes such a distribution list file to be
expanded now instead of when the reminder is actually sent.
This means that there will actually be a separately stored
reminder for each destination now contained in the distribution
list file rather than one reminder that actually references the
file when the reminder is being sent. This switch applies only
to the file itself (not to any @file destinations within the
file), unless the switch is given globally or file-globally, in
which case it propagates downward. /-EXPAND implies /-LIST.
/ARPA This switch may only be used with a destination of the form
@file or as a file-global switch in such a distribution list
file. It changes the syntax of the destination processor so
that the character "@" precedes an ARPA network host name
instead of a distribution list file name, and all SIXBIT
characters except space, comma, colon, quote ("), and at-sign
(@) are allowed in names without using quotes. A name ending
with a colon (distribution list name for SNDMSG) is ignored.
The switch is intended for files from systems like TENEX with
less sophisticated mail programs.
/-OUTGO This switch is meaningful only in the negative sense. It
prevents mailing the message to your OUTGO.MSG file.
Dates and Times
The commands REMIND, PLAN, EVENT, BATCH, and LATER all accept dates and
(except for PLAN) times. The date and/or time given for one of these
commands specifies when a particular thing should happen: REMIND causes a
reminder message to be mailed and or sent to one or more users at a given
instant; PLAN creates a plan file for the user giving the command and
specifies the date on which the plan file should automatically be deleted;
EVENT puts out a system message announcing an event of general interest
which will take place at the specified time and date; BATCH causes a
sequence of commands to be executed at the specified time and date; and
LATER causes a given program to be run at the specified time and date. For
all of these commands except LATER, there are two ways to provide the date
and time information.
The less confusing manner of giving dates and times is to use one or both of
the switches /DATE=date and /TIME=time after the command name (if both are
used, /DATE must precede /TIME). These switches may only occur immediately
after the command name. (Switches are not permitted with the LATER command,
which takes a fixed one-line format that will be explained on page 106.
Dates and times in the LATER command must use the non-switch format.) If
neither switch is used in a command that needs a date or time, then a date
and/or a time will be expected after the destination list (which is only
present for REMIND) and before the message text.
Dates may be given in any of the following formats (whether in the switch
form or not):
4/28/75 28-APR-75 APR 28, 75
4/28/1975 28-APR-1975 APR 28, 1975
4/28 28-APR APR 28
4/28/* 28-APR-* APR 28, *
*/28/* 28-*-* +3
WEDNESDAY WED W
WEDNESDAY* WED* W*
(Visitors from Europe please note that the slash format is month/day/year,
not day/month/year!)
If a specific month and day are given but no year, the current year will be
used unless the date has already passed, in which case next year is used.
Today's date is considered as already having passed except in the EVENT
command. Months and days of the week may be indicated by as many letters as
are required to identify the name uniquely. For days of the week, the
one-letter abbreviations M T W R F S D are provided. The format "+3" is
used to indicate a date of 3 days from today. The asterisks represent
wildcard dates which are explained in the section below on wildcard dates
and expiration counts.
Times may be given in any of the following formats (whether in the switch
form or not):
1423 223pm 223p 02:23p
14:23 2:23PM 2:23P 02:23PM
0223 223am 223a 223
02:23 2:23AM 2:23A 2:23
2 2AM 2PM 14
+2:23 +2: +:23 +14:
2* 2AM* 2:23* 2A*
If an explicit AM or PM is given, it must follow the time number with no
intervening spaces! This requirement is necessary to distinguish the AM or
PM from the possible beginning of the message text or of a destination name.
Times with three or four digits and no colon normally imply AM if less than
1200 and PM otherwise (the allowable range is 0000-2359); it is possible to
specify AM or PM explicitly, however, if the number is in the range
0100-1259. If no explicit date is given in the command, times with one or
two digits, or with a colon, and in the 1:00-12:59 range without an explicit
AM or PM, will represent the nearest such 12-hour time which has not yet
passed (which might be this morning, this afternoon, or tomorrow morning).
If a date is given as well as a time, times in the 0:00-11:59 range will
normally be considered AM and 12:00-23:59 will be considered PM as for the
four-digit times. Note: A time of 12:00am is midnight, and 12:00pm is noon;
the mnemonic is that 12:00 is a minute before 12:01.
If a time is given but no date, today's date is used unless the given time
has already passed, in which case tomorrow's date is used. If a date is
given but no time, the time used is midnight at the beginning of the given
date.
The relative time format (e.g., +2:23) specifies the length of time before
the command is to be executed (in this example, 2 hours and 23 minutes);
this format may only be used if no date is given and, except in the switch
form, must contain a colon so that +2 days can be distinguished from +2:
hours.
A time followed by an asterisk represents the given time and a wildcard
date; see the section below on wildcard dates and expiration counts.
Wildcard Dates and Expiration Counts
As demonstrated in the example dates and times above, an asterisk (*) can be
used as a wildcard in place of the month or year, or following a day of the
week or a time. Such dates and times cause the command to be executed
repeatedly until exhaustion of the expiration count, which is explained
below. (Wildcard dates are not permitted in the PLAN and EVENT commands.)
An asterisk used in place of the month will cause the command to be repeated
once every month, and an asterisk used in place of the year will cause
yearly repetition; asterisks used for both the month and the year will cause
monthly repetition every year on the given day of the month. An asterisk
following a day of the week will cause weekly repetition on the given day of
the week. An asterisk following a time will cause daily repetition at the
given time; in this format no date can be given.
If * is used for the month but not for the year, the command will expire at
the end of the specfied year, or the current calendar year if none is
specified.
When a wildcard date is used, the command is repeated until exhaustion of
the expiration count. The expiration count can be set explicitly by using
the /COUNT=n switch (global only) or by following a non-switch-format
date/time with #n, where n is a decimal number. If no expiration count is
given, the default of 50 is used. A count of 0 or ∞ will prevent the
command from expiring unless it is explicitly cancelled by the user.
A4.2 Mail to Other ARPA Network Hosts
Mail can be sent to users of other computer systems connected to the ARPA
network. To send network mail, you must tell the MAIL program the name of
the recipient, as understood by the other host, and the name of the host.
Each host has an official name, a string of letters, digits, and hyphens.
For example, our host name is SU-AI. Hosts may also have unofficial
nicknames. Either the official name or a nickname can be used to identify a
host; you need only type enough characters to identify the host uniquely.
For example, we have the nickname SAIL which can (as of this writing) be
abbreviated SAI. Each host also has a number; you can type a decimal host
number instead of a name. The format for a network destination is
name % host
where "name" is the recipient's name at the host and "host" is the host name
or number. The recipient name can contain upper and lower case letters,
digits, and hyphens; if any other characters are required the name must be
enclosed in quotation marks ("...") or downarrows (↓...↓). The name must
also be quoted if it does not start with a letter. Some hosts may consider
the case of letters significant in their user names.
To send a message to several users at the same host, it is possible to
specify a sticky host with a pseudo-destination of the form
% host
Thus, the command
MAIL FEINLER%BBNB,%AI KLH,TK,MINSKY,BH%SAIL,PAPERT
will mail the message to these recipients:
FEINLER at host BBN-TENEXB
KLH at host MIT-AI
TK at host MIT-AI
MINSKY at host MIT-AI
BH at host SU-AI
PAPERT at host MIT-AI
Of course, mail to SU-AI is not actually sent via the ARPA network! The
sticky host specifier "%AI" was not followed by a comma in the example
above; the comma is optional following sticky hosts since the use of a
sticky host implies that at least one destination will follow.
Not all network hosts are servers; that is, some hosts can originate network
connections but do not accept connections originated from another host.
Mail can only be sent to servers, and the MAIL program will refuse to try to
mail to a host which is not known to be a server. We are supposed to be
notified promptly of host status changes, so our host tables should be up to
date most of the time, but if MAIL does not recognize a host you think it
should, consult a system programmer. MAIL will always accept hosts
specified by number.
The process of delivering network mail is rather slow; therefore, the
default action is to queue the message for delivery by the reminder phantom
job rather than to mail it directly from your own job. The switch /-QUEUE
will cause immediate mailing. This switch is automatically assumed for very
long messages (more than about 20,000 characters). A network SEND command
is also done directly from your own job. Note: normally the first attempt
to deliver the mail will be made immediately by the reminder phantom, but if
the system is very crowded there may be no job slots available for the
phantom until later.
If you specify /-QUEUE, MAIL will notify you of the progress of your
message. Network mail may not be delivered successfully on the first try,
because the other host or the network communications equipment may be down.
Therefore, the result of a network mail attempt from your own job is
reported with one of three messages:
USER at HOST -- ok
USER at HOST -- refused
USER at HOST -- queued
The first message means that the mail was sent and acknowledged by the other
host. The second means that the network connection was established but the
other host rejected the mail, for example, because it did not recognize the
recipient as a user of that system. Usually the other host will send back a
message explaining why the mail was refused, which the MAIL program types
out. The third message means that the network connection could not be made
or was interrupted. The message is queued like a reminder and is
automatically retried at three-hour intervals for three days. (The first
repeat attempt is made 15 minutes after the original failure.) You can use
the RETRY command (see the section on the RETRY command) to retry your
queued mail manually. You will be notified via MAIL and SEND of an
unfavorable disposition of queued mail; the possibilities are
Mail to USER at HOST -- ok
Mail to USER at HOST -- refused
Mail to USER at HOST -- expired
The last of these means that the three-day limit ran out without a
successful connection. You will get the "ok" message only if the remote
host sends back a nonstandard reply message; normally you should simply
assume that the message will be delivered unless you are notfied otherwise.
You can use the CANCEL command (page 111) to see if a message is still in
the queue, or to delete it if you no longer want it sent. If the message is
not sent successfully, the notification you receive will contain the text of
your message, so you can direct it elsewhere if necessary.
The header format for network mail is different from that used for local
mail. The section of this document on message formats explains the network
header. In particular, the distribution list (list of recipients of the
message) is by default included in network mail but not local mail. The
/NODIST switch will eliminate the list from network mail.
If you often communicate with users at other hosts, you may want to send
mail to a group of people listed in a file which was prepared elsewhere. To
make this easier, the switch /ARPA applied to a distribution-file
destination causes the file to be scanned using the syntax of the SNDMSG
program on TENEX systems. Specifically:
The character "@" is used instead of "%" to indicate network host
names.
Any character may be used in a recipient name except space, carriage
return, linefeed, tab, quote, colon, comma, and at-sign without
quoting the name. Note in particular that semicolon is a valid
recipient name character.
A recipient name ending with colon (distribution list name) is
ignored completely.
There is an ARPA network protocol for implementing the SEND command to a
remote host. However, most hosts do not implement it. Most notably, it
works to the ITS systems at MIT and the TENEX systems at SRI. Certain other
hosts also accept this protocol, but not very many. The MAIL program will
attempt it to any server host, but it generally won't work. When a SEND
fails to a remote host for any reason, the message is never queued for later
delivery--its delivery is simply aborted.
A message sent to a remote destination by SEND or SEND/NOMAIL, but not by
SEND/YESMAIL or SEND/MAIL, will have a special short header instead of the
normal ARPA network message header. The short header looks like this:
BH@SU-AI 7/12/78 16:19
(Note that the switches can apply to a single destination, rather than
globally as shown here.) If you use /YESMAIL or /MAIL, and the remote host
does not recognize the network SEND protocol, MAIL will try again using the
standard MAIL protocol.
A4.3 The MAIL Command
The MAIL command is used to send a message to one or more users, but can
also be used to write a message in an arbitrary disk file. This command
takes a list of destinations which determines where the message is to go.
See the section above on destination lists.
Mail sent to a user will be seen when he next reads his message file, but a
note saying that mail has arrived is typed out on the terminal of each
destination user who is logged in at the time the mail is delivered. You
can edit your message file with E by giving the monitor command ETV ∂ (or
ETV \MAIL).
A notice can be mailed to the system message file NOTICE.TXT[2,2] via the
MAIL * command. Users see the system messages when they log in. Since a
system message may only be relevant for a short time, an expiration date can
be specified for such a notice. To do this, use the /DATE=<date> switch;
the message will be deleted at the midnight that begins the given date, and
therefore the notice will last be seen on the previous day. The date must
not be wild; that is, it cannot contain the asterisk (*) wildcard specifier.
System messages specified without an expiration date will be deleted after
14 days. (The expiration facility is implemented by including the
expiration date as its octal DAYCNT number in the message header. A program
run every midnight deletes expired notices.) See also the EVENT command for
putting notices about events in the system message file.
Sometimes mail cannot be delivered to a given user right away. In this
case, the mail system queues the message for later delivery. Attempts to
deliver queued local mail will be made every ten minutes for four hours,
with the first such attempt occurring about 2 minutes after the original
failure. Queued network mail is retried every 3 hours for three days,
starting 15 minutes after the original failure. When the message is finally
delivered, or after 24 delivery failures, the sender is notified via the
mail system of the eventual outcome of his mail attempt. Mail will have to
be queued if the destination user is located at another ARPA network host
and that host is down, or if the destination user is at Stanford and is
currently reading his mail file. There is a limit on the size of a message
to be queued (currently about 40,000 characters). Queued mail is handled
automatically by the mail system and the sender need never take any further
action. However, the sender can unqueue any of his outgoing messages that
have been queued; the monitor command CANCEL allows selective deletion of
these queued mail requests (see page 111). Also, the sender can cause MAIL
to retry sending his outgoing queued mail immediately by giving the RETRY
command (see page 105).
Mail for local users is normally kept in files in the [2,2] directory.
These files must have 000 protection so that anyone can write into them,
since the MAIL command is not specially privileged. However, it is possible
to create a mail file which is protected against other users. If there is a
file called MSG.MSG[1,PRG] then mail to PRG will go to that file instead of
the usual [2,2] file; if the file is protected, so that the MAIL command
cannot write the message, then the request will be queued for delivery by
the reminder phantom, which does have the necessary privileges. The phantom
will use its privilege to override file protection only for a file named
MSG.MSG, so you cannot queue mail to an arbitrary protected file.
The LOGOUT program will type and delete a file in your directory called
LOGOUT.MSG if you have no other jobs logged in. This mechanism can be used
to send yourself a reminder to be seen when you leave:
MAIL #LOGOUT Get some ice cream on the way home tonight.
The MAIL program provides for mail forwarding, primarily intended for users
whose primary mailbox is on another ARPAnet host. The feature also allows
for "pseudo-mailboxes" which are forwarded to one or more real destinations.
First we consider the forwarding of mail for a programmer name. As an
example, programmer name GFF forwards to GEOFF%SRI-KA.
MAIL GFF This is a test.
Forwarding GFF to Geoff%SRI-KA
Exit
↑C
In this case, the forwarding entry has been set up to notify the user that
forwarding is taking place. This is optional; usually it will be done for
real programmers and not for pseudo-mailboxes. The use of a user's human
name rather than programmer name works with forwarding:
MAIL GOODFELLOW message text
GFF is the ID for user Geoff Goodfellow
Forwarding GFF to Geoff%SRI-KA
Exit
↑C
Forwarding happens only for MAIL, not SEND!
SEND GFF Test message
Exit
↑C
But if the SEND command causes mailing, the mail is forwarded:
SEND GFF Test message
GFF not logged in, type Y to mail. Y
Forwarding GFF to Geoff%SRI-KA
Exit
↑C
Another possible use for forwarding is to affect the processing of one's
mail. For example, if user ABC always logs in remotely and reads his/her
mail with RCV rather than E, ABC might be forwarded to ABC/-E to tell MAIL
not to make an E directory when creating a new message file for that user.
This brings up the question of switches applied to forwardees. Most such
switches are applied to all of the corresponding real destinations, e.g.,
MAIL GFF/DIST will be treated like MAIL GEOFF%SRI-KA/DIST. Also, for
forwardees only, /-DIST implies /NODIST, since the mailer may not know
whether the actual recipient is local (in which case /-DIST is applicable)
or at a remote host (/NODIST). A few switches, which affect the format of
local files, are ignored for forwardees, e.g., MAIL GFF/-E ignores the
switch, because the mailer doesn't really know what file s/he's writing.
These switches are rarely used anyway; don't worry about it.
It is possible for a person to be known to the system only for the purpose
of mail forwarding, i.e., s/he will have a forwarding entry and perhaps an
entry in the personnel list so that his/her human name will be known, but
will have no file directories. Such a person is a mail-only destination;
suppose that GIO is forwarded to WIEDERHOLD%SUMEX and has no file
directories at SAIL:
SEND GIO Hello.
Mail-only destination GIO will be ignored for SEND.
Type Y to continue, using valid destinations:
Exit
↑C
(In this case, nothing will happen even if you type Y because the only
destination is a mail-only one, and mailing was not specified.)
MAIL GIO Hello
Forwarding GIO to Wiederhold%SUMEX
Exit
↑C
MAIL to this destination works straightforwardly, to coin a phrase. There
are some other possibilities:
SEND/MAIL GIO text
Mail-only destination GIO will be ignored for SEND.
Type Y to continue, using valid destinations: Y
Forwarding GIO to Wiederhold%SUMEX
Exit
↑C
Since the command asks for both SEND and MAIL (/MAIL), it does have
something to do despite nobody to send to. But you are given the chance to
abort, since saying SEND/MAIL might mean that you expected it to be able to
send also. The command SEND/YESMAIL does not act like SEND/MAIL, but like
SEND:
SEND/Y GIO text of message
Mail-only destination GIO will be ignored for SEND.
Type Y to continue, using valid destinations: Y
Exit
↑C
The pseudo-mailbox capability is useful mainly for incoming network mail,
since local users can easily use the simpler @FILE distribution list
facility. For example, there is a large mailing list called HEADER-PEOPLE
at MIT which includes several SAIL users. When anything is mailed to that
list, MIT must set up several separate network connections to SAIL, one for
each recipient, each of which starts up a separate MAIL job. This can be
made more efficient by creating a pseudo-mailbox SAIL-HEADER-PEOPLE here,
containing all the SAIL people in HEADER-PEOPLE, and replacing them with one
entry for this new mailbox. Pseudo-mailboxes are always mail-only
destinations, i.e., SEND SAIL-HEADER-PEOPLE won't work.
The pseudo-mailbox name must be entered completely; there is no partial name
recognition as for human users. Case of letters is ignored, however.
Incoming network mail will be accepted for any destination listed in the
forwarding file; the remote sender will be notified about the forwarding if
a local mailer would be. The network SEND protocol does NOT accept
forwarding, even in the case of SEND/MAIL (XMAS command in FTP). For the
network SEND protocol, it is just as if forwarding didn't exist.
Reminders may not be sent to pseudo-mailboxes. If a reminder is sent to a
programmer name for which forwarding is in effect, the programmer name is
given to the REMIND phantom as is; when the reminder is actually delivered,
the message will be sent to the actual programmer name and mailed to the
specified forwarding addresses, as in the SEND/MAIL command.
If you want to establish forwarding for yourself, or set up a
pseudo-mailbox, use the command MAIL FORWARD with a message describing what
you want.
A4.4 The SEND Command
The SEND command is used to have a message typed out on one or more
terminals. This is usually for the purpose of sending a brief message to
the terminals of selected users so that they will see it immediately. The
message is preceded by a header telling who sent the message and when; see
the section above on message formats. This command takes a list of
destinations which determines where the message is to go. See the section
above on destination lists.
A message can be sent to all logged in users via the SEND * command. The
message will be typed out on the terminal of every logged in user.
Also, the command SEND ARPA* will send a message to all users who are logged
in at Stanford via the ARPA network.
The SEND command also accepts decimal job numbers as destinations, or
terminal names in the form TTYn.
A user can prevent messages from being typed at his or her terminal by using
the TTY GAG command. In this case, the person trying to send the message
will be notified. Note that a user may be logged in at more than one
terminal, and may have received the message even if one terminal was gagged;
the /WHERE switch will notify the sender of all recipient terminals,
successful as well as unsuccessful. A SEND can fail even if the terminal is
not gagged, e.g., if it is holding output. This also causes notification.
You will also be notified, even if the message is sent, if the recipient
terminal is a display whose page printer geometry is nonstandard and might
cause the message to be lost because the page printer area is too small to
hold it. However, if the currently selected piece of paper is nonstandard,
but piece of paper number 0 is standard in its geometry, the warning will
not be given, since messages are sent to the display's piece of paper 0 as
well as the currently selected piece of paper.
There is an ARPA network protocol for implementing the SEND command to a
remote host. However, most hosts do not implement it. Most notably, it
works to the ITS systems at MIT and the TENEX systems at SRI. Certain other
hosts also accept this protocol, but not very many. The MAIL program will
attempt it to any server host, but it generally won't work. When a SEND
fails to a remote host for any reason, the message is never queued for later
delivery--its delivery is simply aborted.
A4.5 The REMIND Command
The REMIND command allows the delivery of a message to be delayed until a
particular date and time, and/or to be repeated periodically. This command
requires a date and/or time, which are interpreted as explained above in the
section on dates and times.
Reminders are often sent to oneself rather than to another user. The
character "." (period) as a destination means your own login programmer
name. Also, if the first thing after the REMIND command (and global
switches) is a digit, it is taken as the beginning of a date or time, and
your programmer name will be used as an implicit destination:
REMIND 21-JUN KINKS CONCERT TONIGHT
Reminders are normally both mailed and sent at the specified date and time.
However, either of the switches /MAIL and /SEND can be used with the REMIND
command to cause the reminder to be only mailed or only sent. Nevertheless,
if a repeated reminder is being sent for the last time because its
expiration count has run out, it is always mailed even if /SEND was used in
the command.
When a repeated reminder's expiration count runs out, a warning message to
that effect is included in the text of the last reminder.
To selectively delete reminder requests, use the monitor command CANCEL (see
page 111).
A4.6 The GRIPE Command
Complaints, compliments, or criticisms about any aspects of the system or of
the A.I. Lab in general can be entered by use of the GRIPE command. A gripe
can be either "vectored" or sent to the general miscellaneous gripes file.
A gripe is vectored by including a single-word gripe topic on the command
line, or if nothing follows the GRIPE command, in response to a prompt for
the topic. Note that this single-word topic is not the same as, and does
not replace, the subject line which may also be given. If more than one
word follows the GRIPE command on the command line, the line will be taken
as the text of the gripe, which will go to the general gripe file. Also, if
the topic you give is not recognized as a gripe topic, your gripe will go to
the general file. The command GRIPE ? will list the known gripe topics.
Topics are used as pseudo-mailboxes for the mail forwarding system, to
direct your gripe to the specific person responsible for the program or
device you are having trouble with. The general gripe file can be typed out
with the system program COPY by giving the monitor command TYPE \GRIPES
(which may currently be abbreviated TY\G). This file can be examined and
edited with the E editor by giving the monitor command ETV \GRIPES
(currently abbreviatable as ET\G).
A4.7 The EVENT Command
Messages of interest to everyone can be sent to the system message file by
use of the command MAIL *. However, for a message about an event occurring
on a particular day, a more useful facility is provided by the EVENT
command, which also enters the message in the system message file
NOTICE.TXT[2,2], but which does so several times: first on the day the EVENT
command is given, then three days before the event, then again on the day
before the event, and finally on the day of the event. The EVENT command
takes an explicit date and optional time in the formats explained in the
section on dates and times. EVENT will then list the message given prefixed
by a special line of the form:
Event of DAY DD-MON-YY at HH:MMxm
where DAY is the day of the week the event will occur on, DD-MON-YY is the
day, month, and year of the event's date, HH:MM is the event's time, if
given, and xm is either "am" or "pm" for the time. Thus, the date and time
need not be included in the message text itself.
Three days before the event, the day before the event, and again on the day
of the event, the event notice will be deleted and re-entered in the notice
file so that users will see it again on those days. It is finally deleted
at the midnight that ends the day of the event. If the event is on a
Monday, the notice is re-entered on the preceding Friday, Saturday, Sunday,
and the Monday of the event. If the event is on a Sunday, the notice is
re-entered on Friday, Saturday, and the Sunday of the event. Events on
other days are re-entered three days before the event, the day before the
event, and the day of the event. (The re-entering of upcoming events is
implemented by including more than one expiration date in DAYCNT format in
the message header.)
If you want to change the text in an event notice, you can do a RCV * and
edit the message text or time of the event. However, if the date of the
event is wrong, you should delete the notice (with RCV) and make a new one
(with EVENT) because the octal dates in the header determine what days the
message will be seen, and the header cannot be edited.
A4.8 The PLAN Command
The PLAN command is used to create or delete a file describing your
whereabouts, office schedule, or whatever, to be read by users who give the
FINGER command to find you when you are not logged in. The PLAN command
writes a plan file called " PRG".PLN[2,2], where PRG is your programmer
name. Any previous plan file is replaced with a new one containing only the
new message you give. If you enter a null plan, your plan file is deleted.
The plan applies to your login programmer name.
The PLAN command requires an expiration date (but no time) as explained in
the section on dates and times. Your plan file will be deleted at the
midnight that begins the expiration date. (Plan file deletion is
implemented by entering a LATER request (see page 106) to run the program
DELPLN, which will delete your plan file. You can selectively delete this
LATER request by using the monitor command CANCEL--see page 111).
Your plan file can be referenced with the COPY or E programs by using the
\PLN filehack. For instance, the monitor command TYPE \PLN will type out
your plan file, and DELETE \PLN will delete it. Also, the COPY/E
message-file specifier, partial-sign (∂), can be used to reference your own
or someone else's plan file: TYPE ∂.PLN will type out your own plan file and
TYPE ∂ME.PLN will type out the plan file belonging to programmer name ME.
A4.9 The RETRY Command
The RETRY command is used to retry all queued mail immediately. It takes no
arguments at all in the command line. RETRY searches the remind queue for
queued mail (not reminders) sent by or to your login programmer name and
tries to send the mail. (This will be done automatically without using the
command, but the command is provided for impatient mailers.) Please do not
type <call> or ↑C after giving this command, or you may lose a queued
message.
A4.10 The LATER Command
The REMIND command, in essence, allows the execution of a MAIL or SEND
command to be delayed to a specified time. The LATER command generalizes
this delayed execution to allow an arbitrary program (dump file) to be run
at a later time. The command format is:
LATER dumpfile core datetime count
The LATER command does not accept switches and requires all of its arguments
to be on the command line. If the proper syntax is not followed, a message
is typed explaining the proper syntax and nothing else is done.
The defaults for the program file to be executed are device DSK,
extension .DMP, and your alias PPN. If a device is explicitly specified, it
must be DSK or SYS. No check is made when the command is given to ensure
that the specified file exists or is a valid program dump file.
The optional core argument can be used to control the core size and starting
address used to run the program. If this argument is not used, the program
will be run in as much core as is needed to fit it, and will be started at
its normal starting address. The core argument can be in any of these
formats:
<nP> <+m> <-m> <nP,+m> <nP,-m> <+m,nP> <-m,nP>
The angle brackets are actually to be typed. The nP subargument specifies
the number of 512-word pages of core to be assigned to the program; n is a
decimal integer. The +m or -m subargument is a starting address offset,
that is, m will be added to or subtracted from the program's normal start
address. Note: m is an OCTAL integer. The core size may also be given in
1024-word blocks by saying nK instead of nP. One K is equal to two pages.
The date and/or time must be given in the non-switch format as explained in
the section on dates and times. If both a date and a time are given, the
date must appear first.
The optional count argument specifies the number of times the program is to
be run and is ignored unless a wildcard date is used. If no explicit count
is given when a wildcard date is used, the default count of 50 will be
assumed. The format for the count field in the LATER command is
#n
where n is a decimal integer. A count of #0 or #∞ will cause the count
never to run out.
When a program specified by a LATER command is actually run, it will have
your login PPN as its login and alias PPNs. The only privilege it will have
will be the Local User Privilege (LUP). Also, it is run as a phantom
job--if it is stopped because of an error, the job is killed.
Certain accumulators (ACs) are set up when the program is started to
communicate information from the remind phantom to your program:
AC Contents
1 filename of program dump file (same as job's name)
2 extension of program dump file
3 PPN of program dump file--[1,3] if device SYS was specified
4 -1 if this LATER request will not be run again, else 0
The program can only be run if a job slot is available at the time for which
it is scheduled. If the remind phantom is unable to run the program because
no job slots are available, it does not try again later (unless, of course,
the date and time specify repetition). If the system is so crowded that job
slots are in short supply, users who are present in the flesh get priority
over LATER requests. This is rarely a problem except for weekday
afternoons. (If there is no job slot for the remind phantom itself, it will
try to run your request once, as soon as it is run itself.)
LATER requests can be selectively deleted by using the monitor command
CANCEL (see page 111).
A4.11 The BATCH Command
Sometimes you may want to delay the execution of one or more monitor
commands. To allow this, the BATCH command accepts a command string and
enters a request to run a program which enters the commands through a
pseudo-teletype (PTY). The message given with the BATCH command is taken to
be the command or sequence of commands which is to be typed to the PTY. The
only switches permitted are /DATE, /TIME, /COUNT, /TLIMIT, /NOW, and /DO.
The /COUNT switch specifies the number of times the command sequence is to
be executed and is ignored unless there is a wildcard date. The /TLIMIT
switch (the name /LIMIT is equivlent) is used to specify the number of
CPU-minutes the batch job will be allowed to run. The /NOW switch causes
BATCH to execute the command sequence as soon as you have finished entering
it instead of later; in this case no date or time must be given. The /DO
switch causes certain character conversion to be done when entering the
commands, as in the DO program and as explained below.
Character Effect in /DO mode
RETURN ignored
LINE ignored
↔ translated to RETURN followed by LINE
↓ translated to LINE
≠ translated to ALT
λ translated to deferred CALL (one ↑C)
VT adds CONTROL bit to following character
α adds CONTROL bit to following character
FORM adds META bit to following character
β adds META bit to following character
⊗ translated to ESC
⊗- translated to BREAK
≡ quote the following character (no translation)
Note that the characters | and ? which have special meanings in the DO
program are not treated specially by the BATCH/DO command.
If the /NOW switch is not used in the BATCH command, BATCH writes a file on
your alias disk area called BATn.DMP (n is a number chosen to make the name
unique) and enters a LATER request for the running of that program. The
BATn program types the desired commands into a pseudo-teletype (PTY) when it
is run. The LATER request starts the BATn program at one more than its
normal start address; if it is started normally (e.g., RUN BATn), it simply
types out the commands stored in it, so you can find out which BATCH program
is which if you enter more than one. When the BATn program is started by
the LATER request, it writes a file called BATn.LOG on your login disk area
with a log of the commands and typed output. The BATn.DMP file is deleted
when the request is being run for the last time.
If BATCH/NOW is used, no BATn.DMP file is written. The MAIL program itself
executes the command sequence through a PTY as soon as you have entered the
whole command sequence. In this case, the log file is called BATCH.LOG and
is written in your alias directory.
BATCH requests can be deleted selectively by using the monitor command
CANCEL (see page 111). If you delete a BATCH request with CANCEL, the
BATn.DMP file will not have been deleted; you must delete this file
separately.
The BATCH command has a time limit feature, to ameliorate the problem of
runaway batch jobs. The feature is controlled by the /LIMIT or /TLIMIT
switch (the two names are equivalent) in the form
/TLIMIT=mins or /TLIMIT=hrs:mins
The switch is given with other batch switches, right after the command name.
The form /TLIMIT=∞ may be used for an infinite limit. The default time
limit is one hour for jobs submitted for later execution, and is infinite
for jobs run immediately with the /NOW switch. (Presumably the latter case
implies that the user is watching the job run and can interrupt it himself
if necessary.)
The limit applies to the job's runtime (CPU time), not realtime. The BATCH
controller takes clock interrupts every two (real) minutes to check the
controlled job's runtime, so the time limit may in fact be slightly exceeded
before the job is stopped. If the job runs over its time limit, it is
logged out immediately; the log file will end with a line saying
? BATCH: time limit exceeded.
The BATCH command has many deficiencies when considered as a full batch
processing facility. There is no way to control the commands issued on the
basis of past output, no provision for aborting a command sequence if an
error occurs, no provision for mounting tapes or collecting listings. The
command is not intended as a real batch processing system, but merely as a
convenience for delaying the execution of simple commands.
A4.12 The REENTER Error Recovery Facility
The MAIL program remembers all of its input after execution, and can be made
to repeat the command with or without modifications to the command,
switches, destinations, and message. To invoke this facility, type REENTER
to the monitor.
To use this feature while typing in the message text, you can type ↑C and
REENTER, but any text still in the line editor buffer or the TTY buffer when
you type ↑C will be lost. Unless the system is very heavily loaded, the
problem of losing text from the TTY buffer should not come up, but be sure
to type <CR> to activate any text in the line editor before typing ↑C.
Two different modes of REENTER operation are provided. If the command and
destination list were all typed on one line of input from a Stanford display
terminal, that line is loaded into the terminal's line editor and can be
edited and re-activated. In this case, the program forgets all about the
previous command and starts from scratch when the edited command is seen.
The text of a single-line message will be included in the reloaded line; no
message text will be loaded for a multi-line message, but the old text is
remembered and if the new command does not contain a message or a pointer to
a message file, the old text will be re-used. Note: the subject line is
considered part of the text, and the state of the /SUBJECT switch may not be
changed if the old text is re-used in this way.
The second mode of repeating a command is used if the destination list was
given on more than one line or from a non-display. In this case, the
command and destination list are typed and you are asked if you want to keep
the old destinations. Whether you answer yes or no, the command name and
global switches are loaded into your line editor (displays only) and new
destinations can be added on the command line. Finally, if no message text
appears in the re-edited command, the old message is used as in the first
mode. (Note: in this mode, only valid destinations are remembered from the
old destination list; in the first mode what is remembered is the actual
string of characters you typed.)
If the old text is re-used, in either mode, before sending the message the
MAIL program asks if the user wants to edit the command or the message text
with E. (Editing with E is allowed whether or not the user is at a Stanford
display, although of course it's easier to do from a display. SOS editing
is not available because SOS does not use the same SNAIL-startup conventions
as E.) In this case, a MAIL$E.TXT file is written and E is run as in the
<CONTROL><META>E case--return to the MAIL program is done via the
<CONTROL>XRUN command.
A4.13 Hand-Holding Mode
If a command (other than LATER and RETRY) is given with no arguments other
than optional global switches, the MAIL program will use an alternate syntax
called hand-holding mode which is more verbose but less confusing to an
inexperienced user. In this mode, MAIL will prompt separately for each
piece of information appropriate to the given command; the possible prompts
include
"To" destinations
"CC" destinations
Date and time
Expiration count
Subject
Message text
One possibly important difference between this and the normal syntax is that
the subject line is always entered separately from the body of the message,
even if the latter comes from a file.
Each prompt may be answered by a line containing just the character "?" to
see a message explaining the format of the required information for that
prompt.
A REENTER command following the use of this format will be treated the same
as one following a multi-line destination list in the normal format.
A4.14 Interfacing to MAIL from Other Programs
The MAIL program can be run from another program using the SWAP UUO. A
special facility is provided for providing MAIL with the required arguments
via the ACs which are preserved by the SWAP UUO. To do this, start
SYS:MAIL.DMP at one less than its normal starting address. The message text
(including subject line, if desired) must first be written in a disk file,
or a TMPCOR file if the MAIL program is to be run in the same job as the
swapping program. MAIL will, if desired, SWAP back to the originating
program (or any other program). The ACs should be set up this way:
0-5 SWAP UUO arguments for return after MAIL if desired:
0 device
1 filename
2 ext,,mode bits (see UUO manual)
3 core,,starting address increment
4 file PPN
5 login PPN if starting new job
6-16 MAIL arguments:
6 destination PPN or file (see below)
7 file extension if required
10 file PPN if required
11 message text file name
12 message text file extension
13 unused
14 message text file PPN
15 date and time for REMIND (see below)
16 flags (see below)
17 is the SWAP AC and is not preserved in return after MAIL.
The flags in 16 are:
400000,,0 not used
200000,,0 /-E
100000,,0 /NODIST for ARPAnet mail
40000,,0 /LIST
20000,,0 /SEND
10000,,0 /-HEADER
4000,,0 /-QUEUE
2000,,0 /APPEND
1000,,0 /DIST for local mail
400,,0 /WHERE
200,,0 /SUBJECT
100,,0 /MAIL
40,,0 /YESMAIL
20,,0 /NOMAIL
10,,0 /EXPAND
4,,0 command is REMIND
2,,0 command is MAIL
1,,0 command is SEND
770000 not used
4000 /-OUTGO
2000 read destinations from named file (ACs 6-10)
1000 return via SWAP when done
400 text input is from TMPCOR file
200 delete input text file when done
100 send to job (binary number in AC 6)
40 send to TTY (SIXBIT name in AC 6)
20 destination is * or ARPA* (AC 6 ignored)
10 mail to explicitly named file (ACs 6-10)
4 don't use this bit (/CC)
2 /ARPA (2000 bit must also be on)
1 if SEND, send to ARPA* (20 bit must also be on)
if MAIL, delete old contents of file
(for PLAN, see below)
Nothing is guaranteed about the results of setting inconsistent or
irrelevant combinations of flags, e.g., /EXPAND for a command other than
REMIND. Note that the /MAIL switch has two different meanings for the SEND
command and the REMIND command, but is the same bit in either case. Bits
which are currently unused should be zero.
If the 400 bit in AC 16 is on, the left half of AC 11 is taken as the TMPCOR
file name; the TMPCOR file PPN is the alias PPN of the MAIL job. The 200
bit in AC 16 will delete either a DSK file or a TMPCOR file.
The usual case is sending a message to a programmer name. For this case,
AC 6 should contain zero in the left half and the sixbit programmer name
right-justified in the right half. Do not use "." for your own programmer
name (use the programmer name explicitly) nor "*" for a wildcard destination
(use 20 bit in AC 16).
Mail can be sent to any file (as in the #file destination format) by setting
the 0,,10 bit in AC 16 and specifying the filename in ACs 6-10. More than
one destination, or a recipient at another ARPA network host, must be
specified by using an indirect file as in the @file destination format; set
the 0,,2000 bit in AC 16 and specify the file with the destination list in
ACs 6-10.
Any files used (except the TMPCOR message file) must be on device DSK. No
default extensions will be used; specify the desired extension explicitly.
(The right half of an extension word must be 0.) A zero file PPN uses the
job's alias PPN as usual.
Exactly one of the 7,,0 bits should be on in AC 16 to specify the command to
be carried out. The effect of the PLAN command is achieved by specifying a
MAIL command with the delete-old-text bit and explicit file destination
(2,,11 in AC 16) and " prg.PLN[2,2]" as the destination filename in
ACs 6-10.
The date and time in AC 15 is in the format:
BYTE (4)MONTH (5)DAY (6)YEAR (3)DAY-OF-WEEK (6)HRS,MINS,FLAGS
The flags are used for special formats:
0,,1 absolute date, DAYCNT in left half
0,,2 date is tomorrow (lh is zero)
0,,4 every day reminder (lh is zero)
Otherwise, zero in the left half means today's date, a nonzero number in the
7,,0 bits is an every-week reminder (1=Wed, 7=Tues), and anything else is an
every-month or every-year reminder with at least one of the month and year
fields zero. Month 1 is January, day 1 is the first of the month, and year
1 is 1965. The HRS field is hours past midnight (0-23) and the MINS field
minutes past the hour (0-59). An absolute date (no wild fields) must be in
DAYCNT form.
Another facility is also provided for queuing MAIL requests when the SWAP
technique is inappropriate, for example because another job slot might not
be available and your program must keep itself going rather than be swapped
back in later. This facility was designed for the FTP server but can be
used by other programs. Write a file called <anything>.FTP[RMD,SYS] which
contains, in text form, a MAIL command and destination list on the first
page, and the message text on the second page. (This is the format of the
MAIL$E.TXT file used for editing messages with E.) When the remind phantom
is next run, it will try to start a MAIL job which will execute the command
and delete the file.
The normal SNAIL startup procedure (starting MAIL at one more than its
normal start address) is used by E both to return to MAIL after you have
used E to edit your input text file and in response to the MAIL command in
E. This entry is not normally used except by E.
A4.15 The CANCEL Command
The monitor command CANCEL will run the CANCEL program which will list, and
allow selective deletion of, REMIND requests from or to you, BATCH and LATER
requests by you, and queued mail from you. This program can also be used to
list these requests without asking whether you want to delete them: after
any request is listed, type the letter L in answer to the deletion question
and any remaining requests will be listed without interruption. Since the
CANCEL program has to share the use of the reminder queue files with the
system reminder phantom job, there will sometimes be a delay in the listing
of reminders. An appropriate message is typed in this case.
A4.16 The RCV Command
The RCV program allows MAIL messages to be selectively deleted, listed, or
saved as desired. The program is called by simply entering the monitor
command RCV. All mail files which can be construed as being for you are
offered for your perusal. It is also possible to edit other users' mail
files with RCV by giving an argument, e.g., RCV BH. The command RCV * will
allow editing of the system message file NOTICE.TXT[2,2], and RCV GRIPE will
allow editing of messages sent by the GRIPE command. Most mail files are
maintained in E format, and E format is not preserved when such a file is
edited with RCV--therefore:
*** NOTE: IF YOU EDIT AN E-FORMATTED FILE, RCV WILL INVALIDATE ***
*** THE DIRECTORY PAGE AND ISSUE A WARNING. SUCH FILES SHOULD ***
*** USUALLY BE EDITED WITH E TO PRESERVE THE PAGES AND FORMAT. ***
RCV also allows editing of the files created by the news service automatic
notification feature; the command RCV \ will present your notifications for
editing, and RCV \PRG will allow you to edit the notifications sent to user
PRG.
It is also possible to use RCV on files not in [2,2] (such as saved message
files previously created with RCV) with a command like:
RCV #filename
with default of DSK:SAVED.MSG in your (alias) disk area. The conventions
given below for output filenames also apply here.
Finally, the command RCV ?PRG will type the plan file for user PRG, if there
is such a file. In this case, the file is merely typed, not edited.
** NOTE: ONCE RCV HAS OPENED A MESSAGE FILE, YOU SHOULD EXIT ONLY **
** BY TYPING "E" TO AN OPTION REQUEST, AS EXPLAINED BELOW. TYPING **
** <CALL> TO EXIT MAY RESULT IN LOSING SOME OF YOUR MESSAGE TEXT! **
If none of the messages in an input file is deleted or changed, RCV does not
write out a new version of the file; thus the file's time and date written
are unchanged, and, particularly, any ETV directory the file may have had is
still intact.
RCV deletes without comment all formfeed characters in any file edited (that
is, any file actually changed). Thus any page structure of such a file is
destroyed by RCV.
When a mail file is opened, messages are typed out one at a time, and for
each message you may select several processing options, in the format
<options> [ <space> <filename> ] <cr>
where the [...] represents an optional argument. Each option is represented
by a letter; more than one may be used, except that a few options must be
used alone, as noted below. The filename may be specified if you select the
C (copy) or T (transfer) option. For help in specifying a file, use ? as
the filename. Here are the option letters which select a final disposition
for the message:
S Save the message in the mail file.
D Delete it from the mail file.
C Copy it to a file of your choice.
T Transfer it to a file. Like CD.
L LPT spool it.
X XGP spool it.
K Transfer it to the file LOGOUT.MSG, which will be typed automatically
when you log out.
If none of the above are used, the message will be Saved. Combinations may
be used, e.g., LD will spool the message on the LPT and also delete it from
the mail file. The message will be Saved unless D or T is explicitly
specified. Along with any of the above (or alone, implying S) may be used
at most one of the following editing options:
A Append to the message from the terminal.
Z (Stanford displays only) Edit the message line-by-line using the
system line editor. If you need help with this facility, type
<control><meta>? after entering the line editing mode.
M (Stanford displays only) Modify the message by running the text
editor, E, with that message as its input. Return from E by typing
<control>X RUN.
Along with any of the above, or alone, can be used the following option
letters to avoid seeing more messages:
E Exit, and enter spooling requests from L or X options.
N Go to the Next mail file, if any, else exit like E.
If the message was longer than the amount RCV types out before asking for
option requests, the following option may be used along with any others
specified:
Q Quiet processing; do not type the remainder of the message while
processing it as usual.
Note: E or N with no other options implies Q automatically. Alternatively,
any of the following may be used as the only option, for special processing:
P Postpone the decision for this message. This applies only if the
message was longer than the amount RCV types before asking for
options, and you wish to see the rest of the message before choosing
options.
? Type this option list.
Spooling requested by L or X is not done until RCV is exited (by typing E to
an option request, or by running out of input). The default filename for C
and T is DSK:SAVED.MSG in your alias area. Filenames may only be given
along with a C or T option; if C or T is used without a filename the
previous file is continued. (The first time, you will be asked for a
filename, which may be simply <cr> for SAVED.MSG.)
If you use an argument in the RCV command to edit another user's mail, the
first time you specify any option which would remove a message from the mail
file or alter its contents you are asked to confirm it. Once you have
confirmed such an option, however, you are not asked again.
There are two options provided at Stanford displays for editing the text of
a message. The M option writes the message in a disk file, QQRCV.TMP, and
runs the E editor, which allows great flexibility because of E's powerful
editing capability. However, it is rather slow, because all of RCV's
internal information and all the message files must be saved on the disk.
For minor corrections to a short message, you may prefer the weaker but
faster editing capability provided in RCV itself by the Z option. If you
select that option, the lines in your message will be presented to you one
by one in your terminal's line editor. You may edit each line, using the
normal line editor commands, and type <cr> when done with a line. You may
also type the following special characters (α means control, β means meta):
α<cr> Accept the current line as it now appears in your line editor
buffer and stop line editing, accepting the rest of the message
as is.
αβD Delete the current line.
<alt> Undo the changes in this line, loading a fresh copy into the
line editor.
αβ<cr> Accept lines to be inserted before the current line, until an
inserted line is terminated with α<cr> instead of <cr>, or
<alt> is typed at a blank line.
αβI Same as αβ<cr>.
αD (at the end of a line) Combine this and the next line and load
the combined line into the line editor.
β<cr> Break the line at the cursor, accepting the text to the left of
the cursor as it stands and editing the remaining text as a new
line.
αβA Leave line edit mode, as for α<cr>, but accept text from the
terminal to be appended after the existing text, as if the A
option had been selected.
αβ? Type this list.
Blank lines presented for editing in the Z option are indicated by the
typing out of a space before loading the line editor with the empty line;
thus originally empty lines will be indented in the typeout. In both M and
Z options, the initial header line is not edited. In the Z option, the
blank line at the end of the message is not edited. In the A option,
appended text will be inserted in front of the blank line at the end of the
message, unless the P option was previously used on the current message.
The first time you specify C or T, you are asked to specify a file name if
one was not included in the option line. You can reply with either a
standard filename, ?, or <cr>. Just <cr> uses the default file name,
DSK:SAVED.MSG in your (alias) area. Just ? will print a helpful message and
let you try again. Thereafter, whatever file you specified will be used for
all C and T messages (the file is not closed until you exit or select
another one) until you specify a new filename along with a C or T option as
described above. Note: if the specified file already exists and is in E
format, the new messages are added at the end of the file preceded by a
single formfeed; if the file already exists but is not in E format, the new
messages are added at the beginning of the file. If the file does not
already exist, a warning that you are creating a new file is issued; the
file will be created in E format unless two conditions are met: if the
output file is not in the [2,2] directory, and the input file is in non-E
format, then the output file will also be in non-E format.
If all messages are removed from an input file, the file is deleted after
all output files are closed, unless the input file is named OUTGO.MSG in
which case the empty file (which may actually contain a few spaces, carriage
returns, and linefeeds) will survive. If none of the messages in an input
file is deleted or changed, RCV does not write out a new version of the
file; thus the file's time and date written are unchanged, and,
particularly, any ETV directory the file may have had is still intact.
The notation ↓chars↓ may be used to get non-alphameric characters in a
filename. In addition, a shorthand notation is provided for entering names
of mail files: if the character ∂ is the first character of the filename,
then the device becomes DSK, the default extension .MSG, and the default ppn
[2,2]. (The extension and ppn can be changed later in the filename.) If
the next non-blank character is not alphameric, the filename used is your
programmer name right justified, e.g., ↓ REG↓. (Note that this is your
own login name, not the name whose mail you are editing.) Thus, the
filename ∂ represents your own mail file. You can specify a different
programmer name with the format ∂prg and either this or the format ∂ can
also be optionally followed by an extension and/or a PPN to change the
default values as described above, e.g., ∂.PUR or ∂[1,ME].
RCV has a fairly small message buffer. If a message is longer than that
buffer, seeing the first few lines of the message may tell you enough about
it to decide how to process it without seeing the rest. Therefore, in that
case, you will see as much as fits, followed by an overflow notice and an
option request. After you enter the desired options, the remainder of the
message will be typed as it is being processed, so you may safely use the
Delete option and you will still see the rest of the message. If you want
to avoid this continued typeout, type the letter Q (for Quiet) before your
option choice, e.g., QD for Quiet Delete. Q is only recognized when a
message overflows. If you select E or N with no other options, you get Q
automatically. If this is not what you want, type, e.g., SE. If you wish,
you may postpone the decision on how to process the message until after
seeing the rest of it, by typing P to the option request. This will type
the remainder of the message and ask again for options. QP is illegal, and
P is only legal when a message overflows.
RCV may be used when not logged in; however, each user can control access to
his own mail, by OPTION.TXT options. Three possibilities are available.
The default is no access. To allow your mail to be read but not modified,
put
RCV:READ
in your OPTION.TXT file. If the not-logged-in user types RCV PRG the file
examined is OPTION.TXT[1,PRG]. You may also allow not-logged-in users to
edit your mail file as if they were logged in by using
RCV:WRITE
as the option.
Not-logged-in users at Stanford display terminals (Data Disc or III) are
always given at least READ access to mail, providing the message file is not
protected against RCV.
It should be noted that the normal file protection mechanism still applies,
so that most options which involve copying the message to another file will
not work when not logged in. This includes C, T, K, L, X, M, and P.
A not-logged-in user who is reading mail as permitted by the READ option may
safely use <call> to quit RCV.
There is a special option available in RCV for reading the A.P. news
digest. This option is provided when the RCV command is given without an
argument, if you have an OPTION.TXT file with a line of the form
RCV:DIGEST;
You are asked "Read A.P. digest?" if the digest file exists. This option
may be used along with READ or WRITE as described earlier.
Another special option available through the OPTION.TXT file is:
RCV:NOMAIL;
If you have this option and give the RCV command without an argument, RCV
ignores your main message file and simply processes any other files which it
would normally handle. This is provided for users of various special RCV
features (such as DIGEST above) who use E to edit their mail files since
mail files are now normally in E format. To override the NOMAIL option
(i.e., to edit your mail file with RCV), give your programmer name
explicitly in the command, e.g., RCV PRG.
For use at non-Stanford terminals, RCV has a mode in which it accepts tty
input in SOS representation (see Appendix 13). The main reason for this is
to allow ?* instead of ∂ for redirecting messages to another mail file, but
it can also be used with the append option to allow appending upper/lower
case text from an upper-case-only terminal. The following notes apply:
1. When RCV is started, it decides whether or not to use SOS representation
on the basis of the FCS (full character set) bit maintained for each
terminal by the monitor. This bit is set by the TTY FULL command (or ESC F
at a Stanford display) and cleared by TTY NO FULL (or BREAK F).
2. Whenever RCV reads an altmode character from the tty, it will enter SOS
mode and otherwise ignore the altmode, except that if you are already in SOS
mode the sequence ?<alt> will leave that mode. (If you are not in SOS mode,
of course, the ? will be taken as a real question mark and the <alt> will
enter SOS mode!)
3. These comments apply even to the original command line, although the
monitor will echo a crlf after the altmode to confuse you. Note that if
your FCS bit is off and you want to invoke the RCV feature which types a
user's plan file, you must say RCV ??prg instead of RCV ?prg as usual.
4. Under no circumstances is tty output done via SOS conversion. I hate
seeing all those question marks!
5. If you are in SOS mode and type ? followed by a character which is not
defined as an SOS code, the character will be treated, and echoed, as
ASCII 7; this will ring your tty's bell if it has one, give an error message
if you are responding to an option request, and insert a π in your message
if you are appending.
A5 DART
The DART (Dump and Restore Technique) program is used to save disk files on
magnetic tape. It also includes tape positioning commands. This appendix
is excerpted from the file DART.REG[UP,DOC], which includes information on
DART tape formats, complete disk dumps, etc., as well as the following
facilities provided for individual users.
In the description below, braces, { and }, are used to denote optional
items. Vertical bar, | , denotes an exclusive-or choice. Pointed brackets,
< and >, are used to enclose syntactic items that are defined below.
DART accepts the following monitor commands:
DUMP {<dest>←}{<source>}
RESTORE {<dest>←}{<source>}
PUMPKIN {<dest>←}{<source>}
REWIND {<dev>{:}}
EOT {<dev>{:}}
ADVANCE {FILE|RECORD} {<dev>{:}} {<count>}
BACKSPACE{FILE|RECORD} {<dev>{:}} {<count>}
LOCATE {<dest>←}{<source>}
TLIST {<dest>←}{<source>}
TURKEY P<number>|T<number>
<dest> ::= {<dev>:}<file>{.<ext>}{[<prj>,<prg>]}
<source> ::= {{<dev>:}{[<prj>,<prg>]}@}
{<dev>:}<file>{.ext}{[<prj>,<prg>]}{,<source>}
<dev> is one of DSK, MTAn, or UDPn.
<file> is any file name or *
<ext> is any file extension or *
<prj> is any project code or *
<prg> is any programmer name or *
<count> is any string of decimal digits.
REWIND
This command will cause the device named to rewind to load point. MTA0 is
the default if no device argument is used. The device named should be a
magnetic tape unit.
EOT
This command will cause ADVANCE FILE to be repeated until either two
adjacent file marks are seen (logical end of tape) or until physical end of
tape is reached.
ADVANCE and ADVANCE FILE
This command will cause the tape to advance past the next file mark on the
tape. If a repeat factor is given, then the command will be repeated that
number of times.
Caution: DART often records more than one disk file on a mag tape file!
Therefore, advance file will (sometimes) skip more than one disk file.
ADVANCE RECORD
Same as ADVANCE FILE except that instead of file marks, record marks are
used. This command leaves you at the front of a record.
BACKSPACE and BACKSPACE FILE
This command will cause the tape to move backwards until a file mark is
seen. DART then does one ADVANCE FILE operation to position the tape at the
front of a file (immediately after the file mark just read). If a repeat
argument is given, then that argument is used to repeat the backspace
operation. Only one ADVANCE is used, after all backspace operations.
Caution: BACKSPACE or BACKSPACE 1 will position the tape at the front of the
current mag tape file. BACKSPACE 2 will position one previous, etc.
BACKSPACE RECORD
Same as BACKSPACE FILE except that record marks are used to stop the
operation instead of file marks. After all backspaces are completed, DART
does an ADVANCE RECORD command.
LOCATE
For each file named in the argument list, this command prints the tape
numbers where this file was dumped and the corresponding creation dates of
the file.
TLIST
This command will list on the destination device the names of the files that
are read from the source device.
TURKEY
This command takes as its argument the number of a DART system dump tape,
and tells you who last used it. It is to find out whose thrug to squuk if
you find a DART tape lying around not where it belongs.
DUMP
This command will write on the destination device, which should be a magtape
(default is MTA0), those files that are specified by the source term. If
there is no source argument, *.*[current area] is used.
RESTORE
This command will restore from tape to the destination the files that are
described by the source term. A null source or destination means
*.*[current area]. The command RESTORE [*,REG]←[*,REG] will restore all of
REG's files to the areas that they were dumped from. Note that if any *
terms are specified or implied in the source, the entire tape will be
searched for matching terms.
PUMPKIN
This command is just like RESTORE except that instead of restoring files
from tape immediately, it queues a request with the Great Pumpkin, who comes
by night to restore your files. It will restore from the most recent system
dump tape containing the file(s), unless you follow the command name with a
switch in the form /P781 or /T31 to request a specific DART tape, or of the
form /4-Oct-78 or 10/4/78 to request a version written on that date or
earlier. (This would be useful if a file has been overwritten and dumped,
and you want to restore an earlier version.) Don't specify a source device
with this command.
A6 SERVICE LEVEL SYSTEM (RSL)
The RSL monitor command runs the RSL program to reserve service level. The
monitor command takes no arguments; the RSL program itself accepts commands
which control its operation. The first section of this appendix explains
the concept of service level.
The timesharing scheduler gives different priorities to each of three user
classes: interactive users, reserved users, and all others (scavengers).
The first goal of the scheduler is to provide good service to anyone doing
interactive work such as editing. The system decides whether a given job is
currently interactive on the basis of keyboard input activity.
When you log in at a time for which you have made a service level
reservation, you are assigned that service level. Whenever you are running,
the scheduler will then attempt to give you a processing level (% of CPU
time) given by
PL = SL - C * (B - 1)/5
where SL is the service level, C is your current core size (in pages), and B
is the price of service level. The system will not let more than a certain
total service level to be allocated in this way (currently 80%).
If you are neither interactive nor reserved, you get some of what is left,
which may be pitifully little. The system is supposedly rigged so that
reserved users always get service at least as good as scavengers. Note that
if you are editing and execute a long-running string search, the system may
decide you are a scavenger and take forever to finish.
Each authorized user has an allowance of two kinds of money, called whams
and bams. Whams may be used only to purchase reservations for peripheral
devices, including III terminals, while bams are good only for CPU service.
The allocations are as follows.
Whams Bams
Half time user 4 100
Full time user 8 200
Panic user 16 400
You are half time or full time in accordance with the portion of your time
devoted to A.I. activities. In an emergency situation, you may be given a
short term appointment as a Panic user.
Your "money" allocations are actually revolving funds in that if you reserve
machine time and use it, you may then re-use the reservation money. In
effect, then, there is a limitation on how much you can reserve at a given
time. There is no conversion between whams and bams, nor can funds be
transferred between persons.
The display costs W (whams/hour) vary with time of day as given in the table
below. The price P (bams/hour) of buying any given service level SL (in
percent) is
P = SL*B
where B is the rate (bams/hour) given in the same table.
Time 0000-0900 0900-1300 1300-1800 1800-2400
W & B W & B W & B W & B
Monday-Friday 1 2 3 2
Sat., Sun., holidays 1 1 2 1
You may reserve a display without a service level or vice versa, but
reservations may be made only for integral hours beginning on the hour.
Other peripheral devices may be reserved only if you have reserved a service
level. The minimum service level purchase is 5%.
The time from 8AM to 9AM and from 5PM to 7PM on weekdays is reserved for
maintenance. No service level or device reservations may be made in those
time periods until 18 hours before the period. Maintenance reservations for
the entire machine may be made, however.
Using the RSL Program
The monitor command RSL with no arguments runs the RSL program. You must be
logged in first.
RSL will prompt you with an asterisk ("*") when it's ready to accept
commands. Command format is discussed in detail below. Commands are
RESERVE, CALENDAR, AVAILABLE, DISPLAY, MAINTENANCE, HELP, and EXIT.
For example, to reserve 15% SL at 1400 on the 31st of December, any of the
following command strings will serve:
RESERVE 15 SL AT 1400 HOURS ON 31-DEC
r 15 on 31 decemb at 2 p.m.
RE 2 PM ON 31 DECEMBER 15
R 15 14 31 12
If you wish to change a service level reservation, just do another
reservation for the new desired amount. Releasing a service level
reservation may be done by "reserving" 0% SL.
IMPORTANT!
When you are through making reservations, you should exit from RSL by typing
E. If you exit instead by typing CALL, then there is a possibility that
your reservations may get lost. The E command causes reservations to be
written out onto the disk.
How to Reserve Devices
The six III displays, the user disk pack, plotter, and MTA0 may also be
reserved. RSL merely makes and retains device reservations; unlike service
level, enforcement is left up to the users. To reserve III24, 5% service
level, and the user disk pack, type RESERVE 5 SL III 24 UDP or R III4UDP5.
A device may be unreserved by preceding it with a minus sign: R -III PLTR
-UDP MTA will simultaneously reserve MTA0 and the plotter, and unreserve the
UDP and any and all IIIs. If you don't care which III you get, you may say
III instead of III4 or III23 etc. Note that the plotter is considered by
the computer to be the same device as the paper tape punch, so reserving
PLTR also makes the PTP unavailable.
Other Commands Available
To get a list of your current reservations, type DISPLAY or D for short.
The command string D XYZ will get a list of programmer XYZ's current
reservations.
The CALENDAR command will show you which programmers have what reservations
on a given time and date. For example, C FOR 3 will show you the
reservations for the current hour and the following 2 hours also.
AVAILABLE is a short form of CALENDAR. A 0000 HOURS FOR 24 ON 1-JAN-88 will
yield 24 lines of output telling how much service level is still available
at each time slot on the first day of 1988, should the system last so long.
HELP or H will type for you a summary of command string structure in
condensed form, not necessarily comprehensible.
The MAINTENANCE or M command reserves the entire (bare) machine for hardware
or software purposes, e.g., M 4 pm for 2 will request the machine for
maintenance from 4 to 6 pm. This command can also be used to cancel a bare
machine reservation. Just type a minus sign immediately in front of the
date specification, e.g. M -25 nov 73 for 2. Do not use this command
without prior administrative approval.
Proper use of the EXIT command can be very important, and requires an
understanding of its function. The data base for all current and future
reservations is kept internally in the *-SL-* program at all times. Many of
the commands you give to RSL cause a change in this data base. However,
these changes are not necessarily made in the permanent data base, which
lives on the disk. The EXIT (or E) command causes the internal data base to
be written out on the disk, and it is only this copy which can survive
system crashes or system maintenance. It is possible to lose reservations
by leaving RSL with CALL instead of E.
RSL Command Syntax
Anything in curly brackets is optional.
A slash ("/") between two terms represents one or more delimiters (space,
slash, apostrophe, minus sign, comma).
A double arrow ("↔") between two terms indicates that the order of the terms
is not always important. If the syntax of a term distinguishes it, then it
may appear anywhere in the command line, provided no nondistinguishable term
which might be confused with it precedes it. (It's simpler than it sounds.)
<RSL command> ≡ <Rcom>|<Acom>|<Ccom>|<Dcom>|<Hcom>|<Mcom>|<Ecom>
<Rcom> ≡ RESERVE {<sl-arg>}↔{<hr-arg>}↔{date-arg>}↔{<for-arg>}
↔{<device>}
<Acom> ≡ AVAILABLE {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Ccom> ≡ CALENDAR {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Dcom> ≡ DISPLAY {<programmer initials>}
<Hcom> ≡ HELP
<Mcom> ≡ MAINTENANCE {-}{<hr-arg>}↔{<date-arg>}↔{<for-arg>}
<Ecom> ≡ EXIT
<sl-arg> ≡ <integer> | <integer> SL
<hr-arg> ≡ {AT} <military hour> | {AT} <civilian hour>
<civilian hour> ≡ [ 1 | 2 | ... | 12 ] { AM | A.M. | PM | P.M.}
<military hour> ≡ [0 | 1 | ... | 23]{00} {HRS|HOURS}
<date-arg> ≡ {ON} <people day>
| {ON} <day-arg>/<month-arg>{/<year-arg>}
<people day> ≡ SUNDAY | MONDAY | ... | SATURDAY
<day-arg> ≡ 0 | 1 | 2 | ... | 31
<month-arg> ≡ <people month> | <computer month>
<people month> ≡ JANUARY | FEBRUARY | ... | DECEMBER
<computer month> ≡ 1 | 2 | ... | 12
<year arg> ≡ {19}71 | {19}72 | ... | {19}80
<for-arg> ≡ <integer> | FOR <integer>
<device> ≡ MTA | PLTR | UDP | <iii>
<iii> ≡ III | III0 | III1 | ... | III5
| III20 | III21 | ... | III25
Semantics
Names of commands, weekdays and months may be abbreviated by truncation, and
may be capitalized or not. Device names may not be abbreviated.
The FOR term (e.g., FOR 3) specifies a consecutive number of hours, starting
with the hour and date specified.
When the syntax of a command does not allow a left-to-right scanner to
distinguish terms, then the ambiguous terms will be assumed to be in the
order listed in the syntax.
If a term is missing from an argument, RSL will supply one it deems
appropriate. RSL always has a time and date "in mind," called the default
date. The default time and date are usually the last time and date you
typed. If a command does not specify a time (date), then the default time
(date) will be used.
Commands terminated with a line feed (altmode) will advance (backup) the
default time and date before executing the command. The amount of advance
(backup) is 1 hour, 1 day, 1 week, 1 month depending as plain, control,
meta, or control-meta were used with the line feed (altmode).
A date specified by giving the name of a day, is the earliest future or
present date falling on the given weekday. (Notice that at 0830 on
Wednesday, "WEDNESDAY" specifies either the current date, or the date one
week hence, depending on the hour specification.)
A7 FIXIMLAC
The FIXIMLAC command is used from IMLAC terminals to reload the program
which controls the terminal into its minicomputer. The command runs a
program on the PDP-10, and may be used without logging in first. The use of
the command is shown below as part of the startup procedure.
IMLAC RELOADING PROCEDURE
IF THE IMLAC IS DEAD:
1. SHIFT LOCK off (up).
2. Start at 40 (Push STOP, then hold the AT 40 key while pushing START).
3. Type C (upper case) several times to send ↑C's.
4. Type fiximlM (upper case M goes out as a <CR>).
5. Wait about 10 seconds to give the system time to log you in.
6. Hit <CONTROL><TOP><SHIFT>S.
IF THE IMLAC IS ALIVE:
1. At monitor level, type FIXIML.
2. When the program puts out a *, type
<CONTROL><TOP>B (Sends the IMLAC to its loader)
<CONTROL><TOP><SHIFT>S (Starts the loader)
A8 ARPA NETWORK
The ARPA network is a facility organized by the Advanced Research Projects
Agency of the Department of Defense to connect computers at various research
centers funded by ARPA, allowing people at one host to use the resources of
another host. The device which provides the interface between our computer
and the network, called an IMP (Interface Message Processor), can be used by
user programs like any other I/O device. Two main system programs are
provided for connecting to other computers by console commands: the user
TELNET program and the File Transfer Protocol program (FTP). The former
allows you to use your terminal as if it were a terminal of the remote host
computer; the latter provides high-speed transmission of data between hosts.
This appendix explains the use of these programs. It contains excerpts from
the file TELNET.MRC[UP,DOC]. The FTP command description here is taken from
FTP.DCS[UP,DOC].
A network connection typically involves a program at both hosts. For
example, to make a TELNET connection to another host, you run the user
TELNET program here. This program establishes a connnction with the server
TELNET program at the other host. We provide user and server programs for
several protocols besides the main ones described here; for example, the
monitor commands WHO, TALK, and FINGER can function as network user programs
for special protocols when directed to another host.
The TELNET or TN commands, which are identical in effect, are used to run
TELNET. The FTP command runs FTP. There is also an OTN command, which runs
a version of TELNET using the "old" protocol; this is now largely obsolete.
The DTN command runs a special version of TELNET which simulates, to the
remote host, a Datamedia 2500 terminal, so that you can use display programs
on the other system. Finally, the SUPDUP command (abbreviated SD) runs
another special version of TELNET which provides remote display support when
talking to the ITS systems at MIT. Both DTN and SUPDUP can be used only
from a Stanford display terminal. SUPDUP is documented later in this
appendix. All of these commands require that you be logged in. They take a
remote host name as argument. (The host names are listed in a later section
of this appendix.) The host can be specified by number instead of by name,
and a socket number can optionally be used. (The socket number determines
the server program to which you are connected, e.g., socket 3 gets you the
FTP server program, and socket 27 gets the new protocol TELNET server.)
A8.1 The User TELNET
Our user TELNET program is run by the TELNET and TN commands, which take a
host name as argument. When it is run, it attempts to connect to the
specified host. It will type Trying when it starts setting up the
connection, then Open if successful, or an error message otherwise.
The monitor commands to access TELNET are TELNET, TN, and OTN. TELNET and
TN are used to access the new TELNET protocol, which is the official
standard today. The OTN command is used to access the archaic and obsolete
old TELNET protocol. The syntax is:
TELNET socket,host
TELNET prompts for an argument if one isn't given. A "?" typed in the
command line prints out a short help message.
The socket field is optional and must be a number followed by a comma or
atsign if present. The host field is either a host name or a number.
Numbers are octal unless followed by a decimal point or if an 8 or 9 occurs
in the number, in which case it is assumed decimal.
The host name/number is the ARPAnet site you wish to connect to. There is a
list of hosts in this appendix; an up-to-date list can be seen by giving the
monitor command R HOSTAB.
The socket number argument is used to connect to some special server program
at the remote host, rather than the normal TELNET server. Special servers
are normally used by other programs, e.g., the WHO command when a host name
is given as argument. Normally only the maintainers of network programs
will need to specify socket numbers to TELNET.
Datamedia simulator TELNET is invoked by the DTN command. Read later on
under Datamedia simulation.
The information which follows also applies to the DIAL program, a
TELNET-like program which uses dial-up telephone connections rather than the
ARPA network. The format of the DIAL command is explained on page 53.
Another similar program is called PTYJOB, for communicating with a
pseudo-teletype; it is not run with its own monitor command, but by
R PTYJOB.
Foreign hosts do not use the Stanford character set. Instead, they accept
standard ASCII codes. Letters, digits, and most of the punctuation
characters available in ASCII are the same in the two codes, however. The
main difference is that codes 1 to 37 (octal), used for special printing
characters at Stanford, are control characters in ASCII. The precise use of
these control characters is defined by the remote host. TENEX hosts, for
example, use ASCII control-A to mean "delete one character," like our BS.
For users at local terminals, TELNET handles this difference by interpreting
the CONTROL key on a Stanford keyboard to mean ASCII control; i.e., CONTROL
on a letter makes TELNET convert the letter to upper case and subtract 100
from the character code.
More precisely, TELNET has two modes: display and transparent. Display mode
is legal for all terminals and is the default mode for all displays.
Transparent mode is only legal for Datamedias and non-displays and is the
default mode for non-displays.
In display mode, character set conversion between Stanford ASCII and
standard ASCII is done. In addition, the CONTROL key converts the character
to its ASCII control value; hence CONTROL-C sends 003 or ↑C. TELNET uses
META and CONTROL-META characters as commands to itself, as listed below. In
some cases, META and CONTROL-META are equivalent. In others, a processing
switch is set by META and cleared by CONTROL-META. In the list below, βX
represents META-X, αβX is CONTROL-META-X, and ⊗X means either one. Display
mode is the only legal mode for DD's and III's.
There are certain differences between the two character sets in non-control
characters. These are handled by automatic translation. Specifically, the
following translations are done:
char Stanford ↔ external
~ 32 ↔ 176
} 176 ↔ 175
ALT 175 ↔ 33
≠ 33 → 33
The Stanford not-equal has no external representation and cannot be entered
from a remote host. All other codes are transmitted unchanged. Note that
our BS (octal 177) is the ASCII delete; there is an ASCII backspace (10),
which is our λ. Typing λ or CONTROL-H to TELNET will produce that code.
The other possible ambiguities are our characters ↑ (136) and ← (137).
These codes have two different meanings: the DEC PDP-10 version of ASCII
agrees with our use, but the official version uses those codes for ∧ and _.
Our network programs support the arrow version, and our ∧ and _ characters
are transmitted unmodified as 4 and 30.
In transparent mode, no character set conversion is done. All ASCII
characters (including ↑C) are read and transmitted as is, with the exception
of ↑↑ (control-uparrow, octal 036) which is the command escape. ↑↑ repeated
sends ↑↑ to the foreign host (similar to TIP doubling of @). ↑↑ followed by
- is the command complement escape. In other words, ↑↑E does the E command
and ↑↑-E does the E complement command. Transparent mode is the only mode
which works well on non-displays since it is the only mode where the full
ASCII character set can be sent.
Transparent mode is occasionally useful for DM users if they wish to use a
foreign host's DM service. For example, if you want to use TVEDIT on a
Tenex you want to be in transparent mode (after telling the Tenex you're a
DM). In transparent mode the <EDIT> and [NULL] keys are passed to the
foreign host just as they are with no interference from SAIL's terminal
service. On Datamedias, the escape character is <EDIT>[NULL] instead of ↑↑.
Hence, <EDIT>[NULL] Q gets you out of TELNET, and <EDIT>[NULL] - D closes an
input file.
Transparent mode is also useful for simulating the behavior you get when you
use a TIP. In other words, your input gets passed to the remote host the
way you expect it to without SAIL trapping certain characters. Of course,
the escape character is trapped, but it can be changed to any character
desired with the X command, so ↑↑X@ makes things even more like what a TIP
does.
The proper way to flush a connection from TELNET is with the Q or C commands
(their complements are the same). This gracefully closes the network
connection and in the case of the C command prompts for another host to
connect to. In transparent mode this is either ↑↑C or ↑↑Q. CALLing out of
TELNET is never a good way to flush a connection and of course can't be done
in transparent mode since ↑C is an ordinary character.
Commands are never echoed, although their effects may cause terminal output.
In the Datamedia simulator TELNET (DTN), commands are entered in a different
way; neither transparent mode nor display mode is used. In the PTYJOB and
DIAL programs, displays are always in display mode, and non-displays enter
commands as in transparent mode, but ↑C (CALL) has its normal effect and is
not passed on through the program.
A8.2 Control Commands to TELNET, PTYJOB, and DIAL
Note: α means CONTROL, β means META, ⊗ means either META or CONTROL-META
Filespecs may be aborted with altmode. There is no filename or extension
defaulting and the PPN defaults to the ALIAS PPN in the usual way. The
CONTROL and META bits apply to display mode; in transparent mode, β means ↑↑
and αβ means ↑↑-.
⊗A (TELNET only) Send an ATTN to the foreign host. This usually means
something like "return to monitor".
⊗B (TELNET only) Send a BREAK to the foreign host. This is distinct
from ATTN; it appears to be something the Multics guys wanted and
never used.
⊗C (TELNET only) Close connection and ask for a new host name to
connect to. This also exits transparent mode
βC (DIAL only) Turn on control character mode. In this mode all
characters received from the dataphone are typed on your terminal.
αβC (DIAL only) Turn off control character mode. In this mode, octal
codes 1-10, 16-37, and 177 are not typed on your terminal when
received from the dataphone.
βD Open output file. This command asks for a file name, then proceeds
to write everything that comes from the foreign host in this file.
Type ALT when asked for the file name to abort the command. Note
that characters you type, or characters from any input file that is
opened, do not go into the output file unless the foreign host is
duplexing them.
αβD Close the output file. ⊗Q implies this as well.
βE Local echoing mode. Forces the foreign host to stop echoing. In
the DIAL program, this makes you look like a half duplex terminal,
and does not change the state of remote echoing.
αβE Remote echo mode. Requests the foreign host to echo user typein.
If the foreign host refuses to echo, the echo state is restored to
local echoing. In the DIAL program, this turns off local echoing
but does not attempt to change the state of remote echoing.
βF Open append file. Everything sent from the foreign host goes in
the file after the previous contents of the file. If there was a
file previously opened with βD, it will append to that, otherwise
it will ask for a file name.
αβF Same as βF, but always ask for a file name.
βI Open input file. Everything in the file is sent to the foreign
host. Asks for a filespec. Type ALT as filespec to abort the
command.
αβI Close input file. ⊗Q implies this as well.
βJ (TELNET only) Echo mode. Turns on local echoing without consulting
the foreign host. See βE.
αβJ (TELNET only) No echo mode. Turns off local echoing without
consulting the foreign host. See αβE.
⊗K (TELNET only) Send protocol command to kill the remote job. This
command is not guaranteed to work since many hosts do not implement
the network logout protocol.
βK (DIAL and PTYJOB only) Inhibit duplexing LF after CR. The system
normally types a LF out when you type CR. This command inhibits
that. This command is different in effect from βR below, because
it alters only what appears on your screen, not what goes out over
the line.
αβK (DIAL and PTYJOB only) Enable duplexing LF after CR. The inverse
of the above command.
βL Enter line mode. This gives you the line editor on input. This is
the default for displays unless TELNETing to an ITS system. The
line editor is always echoed locally, but in remote or no echo mode
the line editor will vanish after activation.
αβL Enter character mode. Transmission is character-at-a-time. This
is the default on non-displays and when TELNETing to an ITS system.
Useful for running DDT at a remote host.
βM (PTYJOB only) Enters a mode in which all 9-bit characters you type
are sent unchanged to the PTY except βM, αβM, βZ, and αβZ. (Of
course, if you are in line-at-a-time mode some control characters
are still interpreted by the system line editor.)
αβM (PTYJOB only) Leaves the above mode; meta-characters are again
interpreted as commands to PTYJOB.
⊗O (TELNET only) Send ABORT OUTPUT to the foreign host. This should
have an effect like that of ESC O locally at SAIL.
βO (DIAL and PTYJOB only) Turn on terminal typeout. See αβO.
αβO (DIAL and PTYJOB only) Turn off terminal typeout. Useful when
output is already going to a file and you don't want to waste the
time it takes to type out on your terminal as well.
⊗Q Quit. Close network connection and exit.
βR (TELNET only) Same as βI, but reads the file character-at-a-time
instead of buffer- at-a-time. This is less efficient, but also
results in much less messy output, as the characters will be sent
synchronously. Asks for a filespec.
αβR (TELNET only) Same as αβI.
βR (DIAL and PTYJOB only) Inhibit sending of LF after CR. Normally,
when CR is typed, a LF is invented by the system and CRLF is sent
to the foreign host. This command inhibits sending the LF after
the CR.
αβR (DIAL and PTYJOB only) Enable sending LF after CR. The inverse of
the above command.
⊗S (DIAL and PTYJOB only) In line mode, send the text in the line
editor now, without waiting for an end-of-line character. If the
⊗S is preceded by one or more octal digits with ⊗ (e.g., ⊗1⊗7⊗7⊗S)
then the specified octal code is sent as a character. For example,
⊗0⊗S will send a null.
βT (TELNET only) Enter transparent mode. Character set conversion and
local terminal handling are disabled.
αβT (TELNET only) Non-transparent mode. Character set conversion and
local terminal handling are enabled.
⊗W (TELNET only) Get a status message from the host (sends an "are you
there" query).
⊗X Change the command escape to the next typed-in character. This is
only meaningful in transparent mode.
βY (DIAL and PTYJOB only) Enter Datapoint simulation mode. Works only
at a Data Disc terminal.
αβY (DIAL and PTYJOB only) Leave Datapoint simulation mode.
⊗Z (PTYJOB only) Quotes the following 9-bit character, so it is sent
to the PTY as is, regardless of the βM mode switch.
⊗<form> (DIAL and PTYJOB only) If there is an output file open, insert a
form feed character in it.
β@ (TELNET only) Disable debug mode. This is the normal state.
αβ@ (TELNET only) Enter debug mode. Currently this reports the TELNET
protocol negotiations between user and server.
αβALT (TELNET only) Enter DDT if one is present. CPOPJ$G returns to
TELNET.
A8.3 Datamedia Simulation
A special version of TELNET, called DTN, uses a Datamedia simulator instead
of the page printer. DTN only runs on displays, naturally. Additionally,
Datamedia users are probably better off using TELNET in transparent mode,
since besides the grossness of simulating a Datamedia on a Datamedia, it is
also rather gross to use since the simulator's keyboard control has been
oriented around the TV keyboards.
DTN is invoked by the DTN monitor command, and it takes the same format of
commands as TN. When the connection is completed, the screen clears, and
you are on a simulated Datamedia. The CONTROL key maps to ASCII CTRL, and
the META key maps to the Datamedia EDIT key. NULL is sent the way you do it
in ASCII, i.e., CTRL-@.
Commands are entered in as follows: to do a META command you use βFORM
followed by the command letter; ie, βFORM Q gets you out of TELNET. To do a
CONTROL-META command use βVT followed by the command letter; ie, βVT D
closes an input file.
A8.4 SUPDUP
SUPDUP is the SAIL implementation of the ITS SUPDUP program, which is used
for TELNETing between ITS sites. This program uses the internal ITS display
codes for highly efficient communication and full use of ITS display
programs over the ARPAnet. In addition, SUPDUP allows the user to send the
full ITS ASCII character set (which includes some very hairy characters!)
and maps both keyboard input and display output so that a Stanford display
(DD, III, or DM) appears as a funny kind of ITS display.
The information in this section is excerpted from the file
SUPDUP.MRC[UP,DOC], which contains further details on using SUPDUP.
The SUPDUP monitor command should be followed by a host name. The only
hosts accepted are AI, DM, MC, ML, and SAIL; most of these can be
abbreviated to a single letter. SUPDUP will then establish a connection
with the specified ITS site, and after that you will effectively be a
display on ITS, with full bucky bit capability. (SUPDUP to SAIL simulates a
Datamedia. This is not very often useful for someone already at SAIL unless
you are debugging the ARPAnet; in what follows it is assumed that you are
SUPDUPing to an ITS system.)
Some mappings in input and output are made due to the differences between
the SAIL and ITS ASCII character sets. Most of these mappings are
transparent to the user. The design philsophy behind the mappings was to
cause characters typed on the Stanford keyboard to be seen by ITS as the
character appears on the key tops, and for characters received from ITS to
be displayed as they would be at a console at MIT.
Visible output mappings: Caret is mapped to AND sign (∧) since there is no
code in the SAIL character set for caret. There is no way to tell between
AND sign and caret. In addition, centered-dot, gamma, delta, and
circle-plus are not displayed (they generate an error message).
Visible input mappings: αz and αZ are mapped to [CALL], αβz and αβZ are
mapped to α[CALL], and α_ is mapped to [BACK NEXT]. ↑ is mapped to caret;
to send ↑ (distinct from VT) see below. Some other more obscure characters
must be sent by using a command; see below.
[ESCAPE]I is used to enter a SUPDUP command. The following commands are
defined:
K or L Kill the job on ITS and break network connections.
P Temporarily restore the page printer. Typing any character
will return your screen to the ITS display.
Q Quit out, close network connections, detach the job on ITS if
there is one.
R Record contents of screen onto a file; asks you for name of
file to write. REENTER does this too.
V Re-draw the current screen.
? Type a help text.
Command mode also allows some of the more esoteric ITS characters to be
sent. For example, ↑, α↑, β↑, αβ↑, αz, αβz, αZ, αβZ, and α_ are sent in
image mode without being mapped. Special mappings exist for keys not on the
keyboard or trapped by the monitor. They may be sent with bucky bits, and
they have no explicit graphic here or on ITS, as they are special function
keys. These are:
. centered-dot [TAB] gamma [LF] delta
[CR] circle-plus [BS] integral ∂ [NULL]
λ [BACK SPACE] ≠ [CALL] ∨ [BACK NEXT]
α [ESCAPE] β [BREAK] ε [CLEAR]
A8.5 The File Transfer Protocol
The FTP command is used to transfer files between SAIL and another network
host. FTP can be used in two-ways: for a simple transfer, a single FTP
monitor command can be typed which contains all the information necessary
for the transfer, much like a COPY command; if several files are to be
transferred, or one of the less common protocol features must be used, the
FTP command can establish a connection to a remote File Transfer Protocol
server program, and you can then enter protocol commands to initiate
transfers. FTP can also be used for file manipulation other than transfers
at a remote host, e.g., directory listings, and file renaming and deleting.
Although the one-line FTP command is generally easier to use, this document
will start with the more detailed use of the protocol commands. The reason
for this choice is that to use even the one-line command effectively, you
should understand some of the underlying protocol, which is more apparent in
the multiple command mode of using FTP.
The FTP command is used to set up a connection to a remote File Transfer
Protocol server. It takes a host argument like TELNET, except that if a
host number is used it should be in decimal; to specify a nonstandard socket
number, the syntax is host#socket. (The normal FTP connection is to socket
3.) Once the connection is set up, you can enter the following commands to
the FTP program. Each command is a name followed by arguments as described
below. Only the first four letters are significant (letters beyond four are
ignored), and commands may be abbreviated by enough letters to make the
abbreviation unique. Note that file specifications for remote hosts must
follow the format conventions of that host; they are passed on verbatim by
the FTP. In particular, the case of letters may be significant at some
hosts.
Note: FTP command strings sent over the control link to the remote host are
subject to character conversion to conform with standard ASCII, as described
in the discussion of the TELNET program. The processing of file data
depends on the transfer type; see the TYPE command below.
Some of the commands below are named the same as the corresponding command
sent over the network in accordance with the actual File Transfer Protocol;
in some cases alternate names are also defined. Complete information on the
protocol is available in the network document with NIC number 14333,
although there have been several modifications to the protocol since that
document was written. There is also a "new" FTP which is not, so far at
least, actually in use.
We do not implement all of the protocol options. In particular, we accept
only MODE S (stream) and only STRU F (file). Our server accepts MODE and
STRU commands but only with the above arguments; our user does not provide
any way of specifying mode or structure.
When the connection is first established, our user FTP program tries to
negotiate an appropriate type and byte size with the other end's server.
First it sends TYPE I, and then BYTE 36. If the latter is accepted but the
former was not, it sends TYPE I again. (These commands are explained
below.) If these are not accepted, it sends BYTE 8, and if that is
accepted, TYPE A. (All hosts are supposed to accept BYTE 8.) If nothing is
accepted, the program tries again after you give the USER command, in case
the problem is that their server was written by an obnoxious security freak
as at a well-known system in Cambridge, Massachusetts.
The protocol provides an abort function which can be used to stop a transfer
which is in progress. This function can be requested in our FTP user
program by typing ESC I (from a non-display, type ↑← I). This will send the
abort command only if there is a transfer in progress. Many servers do not
process the abort sequence, but they should notice when we close the data
connection. You may end up, if you are doing a STOR, writing an incomplete
file on the other system.
In the file transfer commands below, the character = can be used instead of
either ← or → as shown, for the convenience of users at non-Stanford
terminals.
TYPE x x is A, I, L, P, or E, and specifies the representation type for
the data. The uses of the various types are as follows:
TYPE A ASCII type means that the file to be transferred contains text.
The characters in the file will be transferred to or from the SAIL
character set, as explained for TELNET connections, and null
characters will be ignored. This type should be used to transfer
text files to or from a machine with a different text
representation. Text files can be transferred to or from other
PDP-10 systems more efficently using image type (below) if the few
characters which are translated by ASCII translation are unused in
the file, since our character code is almost the same as that of
other PDP-10s. ASCII transfers of local files will also eliminate
the E directory or SOS line numbers, if any.
ASCII is an abbreviation for TYPE A.
TYPE I Image type means that the file is taken as a continuous stream of
bits and sent accordingly. The number of bits sent at a time is
determined by the byte size set with the BYTE command (below). The
most efficient byte size for us is 36, the size of a PDP-10 word.
Any byte size which is a factor of 36 can be used with no
difficulty, if needed to accommodate some other system. Byte sizes
of 8 or 32, however, cause extreme inefficiency because some bytes
are split between two PDP-10 words. If you are retrieving a file
from an 8-bit or 32-bit system, you might want to use TYPE L (local
byte), which uses only the first 32 bits of each PDP-10 word, and
can therefore be implemented using the normal ILDB/IDPB
instructions. However, sending a file to such a system in local
byte type will lose bits 32-35 of each word.
IMAGE is an abbreviation for TYPE I.
TYPE L Local byte type, as explained above, treats the file as normal
PDP-10 bytes of the size specified in a BYTE command. For byte
sizes which are a factor of 36, this is treated exactly the same as
image type (above); for byte size 8 or 32 it uses only bits 0-31 of
each PDP-10 word. Byte size 32 is more efficient than 8 in this
type.
LOCAL is an abbreviation for TYPE L.
TYPE P ASCII print type is treated by our system the same as ASCII type.
This isn't right, but the protocol is not consistent about what to
do. Some people interpret this type as indicating that the file
contains FORTRAN style format control characters.
TYPE E EBCDIC type is not implemented here. It is used for transferring
text files between two IBM systems. To transfer a text file
between here and an IBM system, use TYPE A; the IBM system will
translate between ASCII and their local character code as needed.
TYPE X This command to our FTP user program does not correspond to a real
data type in the protocol. Instead, it is treated as TYPE L here
but tells the other end TYPE I. Use this command if you are
talking to an 8-bit machine and want to use local byte type, but
the other machine does not accept the TYPE L command.
BYTE n n is a (decimal) number indicating the byte size of the network
data connection. Data will be sent from one host to another in
bytes of this size, for image type and local byte type transfers.
ASCII transfers always use a byte size of 8. (That is, each 7-bit
local character code is translated into an 8-bit network ASCII code
and vice versa.) The allowable byte sizes are 8, 32, and any
factor of 36 (1, 2, 3, 4, 6, 9, 12, 18, 36). In general, the
largest byte size which will work is the most efficient. (Note:
the protocol specifies that it is the responsibility of the user
FTP to ensure that 8-bit bytes are used for ASCII transfers.
Accordingly, our user FTP program does not necessarily transmit a
BYTE command as soon as the user types it; instead, the byte size
in the command is remembered for use in binary transfers, and a
BYTE command is sent to the FTP server whenever necessary as the
transfer type changes.)
USER x x is a string which the foreign host will recognize as a valid user
description, user name, or ppn. Not all hosts require a user name.
If the server requires a password to complete the login procedure,
the user program will ask for the password and turn off echoing
while you type it. Not all hosts require a password.
LOGIN x is a synonym for USER.
ACCT x x is an account number. Some hosts may require this for their
billing/accounting purposes.
XCWD x x is a user name, as in the USER command, which will be used as the
default directory for foreign file specifiers; the effect is like
the ALIAS monitor command here. The command name stands for change
working directory.
ALIAS x is a synonym for XCWD.
RETR x←y This command retrieves a file from the foreign host. x is a local
file specifier, and y is a foreign file specifier. The foreign
file y is copied to the local file x. Current settings (or default
values) are used for byte size and representation type. The x←
string is eaten locally, and the RETR y part is transmitted to the
foreign host.
GET x←y is a synonym for RETR.
TTY x is a version of RETR which uses x as the remote file specifier, and
types the retrieved file on the user's terminal.
STOR x→y STOR means store, and this command is the inverse of the RETR
command. A local file is copied to a foreign host.
SEND x→y is a synonym for STOR.
APPE x→y This command will append the local file to the end of the foreign
file.
PICKUP This command is used to resume an interruped multiple file transfer
and is explained further below.
LPPN This command sets the local PPN flag, which affects the
interpretation of single-pathname transfer commands; see the
section on multiple file transfer, below.
RPPN This command clears the local PPN flag, which affects the
interpretation of single-pathname transfer commands; see the
section on multiple file transfer, below. (The command name stands
for remote PPN.)
MAIL x x is a user ID (like our PPN). Following this command you may type
in a message which will be mailed to the specified user at the
foreign host. The message must be terminated with a line
containing only a period. The MAIL program (see Appendix 4) is a
better way to send network mail.
MLFL x→y In this case x is a local file specifier, and y is a foreign user
ID. The text of the specified file will be mailed to the specified
user.
XSEN x is like MAIL, but the message is sent to the remote user's terminal
if s/he is logged in, like the SEND monitor command at SAIL. This
command and the two following ones are only implemented at a few
network hosts. The SEND monitor command uses this protocol if a
network destination is specified.
XSEM x is like XSEN but mails the message instead if the user is not
logged in, like SEND/YESMAIL here.
XMAS x is like XSEN but mails the message also, whether or not the
recipient is logged in, like SEND/MAIL here.
LIST x←y y is a foreign pathname, possibly including wildcard terms. The
directory listing of the specified pathname is stored in the local
file x.
DIRECT is a synonym for LIST.
NLST x←y is like LIST, but the listing returned is guaranteed to have no
extraneous information in it, simply one full pathname per line.
This listing is intended to be read by programs rather than humans,
but if you really want it...
HELP This command asks the foreign FTP server to send back a message
indicating what commands it takes, etc.
STAT x If x is omitted, this command asks the FTP server to send back
information regarding the FTP connection, e.g., socket numbers. If
x is a directory name at their host (like our PPN), it lists that
file directory. Note: contrary to protocol, most servers
(including ours) treat a STAT with no argument as a request for a
listing of the directory specified in the USER or XCWD command.
DELE x x is a foreign file specifier. The specified file is deleted at
the foreign host.
RNFR x x is a foreign file specifier. This command is short for rename
from; it must be immediately followed by a RNTO.
RNTO x x is a foreign file specifier. This command completes the file
rename operation started by RNFR. (Some hosts accept * for
wildcard specification in these commands.)
QUOT x x is any character string, which should be an FTP command with
arguments. The string is sent as is over the FTP control link (see
protocol, NIC 10596, for terms). QUOT was included to allow you to
execute commands which are as yet unimplemented here, or which are
nonstandard, specific to some serving host. It will be of little
use for those commands which require some special action by the FTP
program at this end.
BYE Terminate connections with the foreign host and quit.
QUIT is a synonym for BYE.
DISC is a synonym for BYE.
XIND x x is a local file specifier. The file will be read and processed
as FTP commands.
Multiple File Transfer
The RETR and STOR commands have some provisions for more convenient transfer
of groups of files when similar names are used at both ends. The normal
format of the commands requires the user to specify two file names, one for
our local file system and the other for the remote host's file system. Our
FTP knows enough about the filename syntax for certain systems (mainly the
PDP-10 systems: ITS, TOPS-10, TOPS-20, and TENEX) to be able to extract a
local filename from a remote one.
If only one filename is given in a RETR or STOR command, it is scanned to
determine both the local and the remote file specification. Normally (in
local PPN mode), the entire file specification is sent to the remote host
except for anything inside [square brackets], which is taken to be a local
SAIL PPN. In remote PPN mode, everything is sent to the remote host, and
your own login or alias PPN is used for the local file. Here are the rules
for determining the local file specification:
1. A "token" in these rules means a string of letters, digits, and the
characters - and @. An asterisk (*) may be used alone as a token to
indicate wildcard file groups, as explained below. If talking to one
of the ITS systems at MIT (MIT-AI, MIT-ML, MIT-DMS, and MIT-MC) then a
period (.) which follows a non-token character (space or punctuation)
is taken as the first character of a token; such a token may also end
with a period.
2. If talking to one of the ITS systems, then a single left or right
broket (< or >) may be used alone as a token, which will be completely
ignored. Otherwise, a token enclosed in brokets is ignored.
3. One or more tokens separated by commas, enclosed in square brackets
([ and ]), are ignored in remote PPN mode, as explained above; in local
PPN mode, there must be only one or two such tokens, and they must form
a valid SAIL PRJ or PPN.
4. Any characters following a semicolon (;) are ignored, except for
the ITS systems, for which the token preceding the semicolon is
ignored.
5. A token followed by a colon (:) is ignored.
6. A single non-ignored token is taken as the local filename. Two
such tokens separated by a period (.) or separated only by one or more
spaces are taken as the local filename and extension. The characters -
and @ in a token are ignored, and the token is truncated to six or
three characters for the local filename or extension. (The leftmost
six or three characters are used.) A period which is taken as a token
constituent, when talking to an ITS system, is ignored for local
purposes. If two or more non-token periods are used in the filename,
the token after the first period is taken as the extension, and tokens
after the remaining periods are ignored.
7. No punctuation characters may appear in the filename string except
the ones mentioned above. Spaces may be used anywhere except within a
token.
The FTP program notifies the user whenever it determines the local file name
from the remote one in this way, and, in the case of RETR, checks to see if
that file already exists before writing it. If there is such a file, the
user is told so and can choose from these options:
Type <cr> to overwrite the file.
Type <lf> to overwrite the file and to suppress further warnings of
this kind for the remainder of the FTP connection.
Type <alt> to abort the transfer.
Type another filename to write a different local file.
If this syntax is used, the implied local device is DSK. (Note that device
field in the remote file specification is ignored for local file purposes.)
To use a different device the local=remote syntax must be used.
A local filename or extension of * either in an explicit local file
specification or as determined from the remote specification is used to
request the transfer of more than one file by a single command. Wildcard
device or PPN is not allowed. If an explicit local file specification is
used, it should agree with the remote file specification in which components
are wild, e.g., the command
RETR *.EXT=<THEIRDIRECTORY>FILE.*
will store any file(s) retrieved with local filename FILE.EXT, probably not
the desired effect. Note also that an explicit local file specification
with no filename or extension implies *.*, so the command
RETR [PRJ,PRG]←REMOTE.FILE
will be treated unnecessarily as a multiple retrieve. This will work but
will involve unnecessary operations. The desired effect can be obtained in
local PPN mode simply by typing
RETR REMOTE.FILE[PRJ,PRG]
which will take the PPN as applying to the local output file, and will send
only the filename and extension to the remote host. In remote PPN mode, it
is necessary to repeat the filename:
RETR REMOTE.FIL[PRJ,PRG]=REMOTE.FILE
There is no corresponding local/remote switch for device names, which are
always considered remote. Therefore, you must say, e.g.,
RETR UDP1:REMOTE.FIL←REMOTE.FILE
to avoid causing a multiple RETR. The TTY command can be used to avoid
having to repeat the filename for the specific case of device TTY.
In the case of multiple STOR, the selected files are found in the user's
local file directory and a STOR operation is performed for each file found
which matches the template. The remote file specification is scanned for
each operation and the character * is replaced wherever seen by the local
filename or extension. (The first * is replaced by the local filename
unless the character . (or, for ITS hosts only, space) precedes it, in which
case the local extension is used. A second * is replaced by the local
extension.) If the end of the specification line is seen before any
replacement has been done, the local filename and extension are inserted
before the carriage return as if *.* had been seen there, so that a command
like
STOR *.SAI=<DIRECTORY>
will work. In this situation the filename and extension will be separated
by a space for ITS hosts or a dot otherwise. No great effort is made to
ensure the syntactic correctness of the resulting remote file specification;
presumably the remote host will complain if necessary.
For a multiple RETR, the remote file specification is used exactly as typed
in an NLST operation, the results of which are saved by the FTP program to
be used in successive RETR operations. Note that the string used as the
NLST argument starts immediately after the = or ←, if any, or after the
space terminating the RETR or GET command name. In particular, any extra
spaces will be sent to the remote host. The remote file specification in
the typed command is not used to determine local file names; instead, the
rules above are applied to each remote file specification received from the
NLST operation. If an explicit local filename or extension is provided by
the user, it will be used instead of the one derived from the remote
filename, as in the command
GET *.TXT=<IGNORED>*.THIS-NAME-IS-REPLACED-BY-TXT-LOCALLY
Multiple RETR depends on the remote host implementing NLST. At present this
command is implemented in both TENEX and ITS. TOPS-10 systems vary in which
commands they implement. Other systems may have a filename syntax which
does not follow the rules above, in which case none of the features in this
section will work.
The PICKUP command can be used to continue a multiple transfer which is
interrupted either by a transient network failure or by a user error (e.g.,
attempt to write into a protected file). The command permits the transfer
to be re-entered along with the (local) name and extension of the first file
actually to be transfered.
Suppose that you are trying to copy a complete directory from another
system, let's say a TENEX, so you give the command
RETR <FOO>*.*
After several files have been retrieved, the connection is broken, while in
the middle of copying <FOO>PARTIALLY.COPIED into PARTIA.COP in your
directory. You re-establish the connection, and type
PICKUP PARTIA.COP
at which point you are invited to repeat the RETR command, which will ignore
all files presented by the remote host until one comes along which matches
the name PARTIA.COP, at which point it begins actually reading files.
If the multiple transfer is stopped because of an error which does not break
the network connection, so you can continue using the same FTP, you can give
the PICKUP command without a filename argument, in which case the last
filename for which a transfer was attempted is used. Also, after the PICKUP
command, you can just type <return> instead of repeating the STOR or RETR
command, and the last such command given will be repeated. The last
transfer must have been a multiple STOR or RETR.
If the PICKUP command line ends with <alt> instead of <return>, the first
file transfered will be the one after the one in the argument (or the one
after the one remembered from the aborted transfer). This is useful for the
case of a transfer which cannot be done because of a protection violation,
when you want to continue the multiple transfer, skipping the protected
file. In a situation like that, you may not know the name of the first file
you want to transfer, but only the name of the last file you don't want to
transfer.
If a PICKUP command is given after a transfer which is not multiple but for
which an implicit local filename was used, e.g.
RETR <FOO>FILENAME.EXTENSION
which implicitly specifies FILENA.EXT as the local name, then the PICKUP
command with no argument can be used to repeat the transfer.
One-line FTP transfers
The format for using the FTP command to carry out a transfer all in one
command line is this:
FTP local ← {host} remote
FTP {host} remote → local
FTP local → {host} remote
FTP {host} remote ← local
The braces are really to be typed; they're not meta-symbols. The direction
of the arrow indicates the direction of the transfer; the first two examples
retrieve files from the remote host, and the last two store files at the
remote host. Therefore, the arrows may not be replaced with equal signs as
in the multi-command syntax. The pathnames may include * for multiple
transfers.
Although there must be an arrow, either of the pathnames may be null, in
which case the other one will be used for both ends as in the RETR or STOR
commands with only one pathname.
Normally FTP will attempt to do the transfer in IMAGE mode. If you want
ASCII mode transfer, give the command as above, but with FTP/A instead of
just FTP. If the remote host will not accept the specified mode, the
transfer is aborted and you can try negotiating manually.
Other switches can also follow the FTP command: /R changes the mode for
parsing a single pathname from LPPN to RPPN; /T is like the TTY command in
multi-command FTP: it types the specified remote file on your terminal. (No
local pathname or arrow is used with /T.)
After doing the transfer successfully, FTP will close the connection and
exit. So if you want to do several transfer commands, it pays to use the
multi-command syntax.
The host specification inside the braces can contain more than just a host
name. Many hosts require a login sequence before files can be transferred;
the parameters for this login are supplied in the host specification like
this:
{hostname/user/acct}
This can be abbreviated to just {hostname/user} or {hostname}. If no acct
is given, no ACCT command will be sent; if no user is given, the commands
USER ANONYMOUS
PASS SAIL
will be sent. These are the standard FTP guest login for Tenex systems. If
you do include a user name, and the remote host asks for a password, you
will be asked to supply it with echoing off.
If you often use a particular host-user-acct combination, you may want to
store the information online instead of typing it in each time. To do this,
include in your OPTION.TXT file one or more lines of the form
FTP: {host/user/acct},{name:host/user/acct/pass},{host/user//pass}
As you see in the example, the format allowed in OPTION.TXT has more fields
allowed than the one typed in the command. One difference is that you can
include a password, if you don't mind taking the risk of storing your
passwords online. (You can have a password but no acct as shown in the last
host in the example.) Also, there is a "name" field which may begin the host
specification; if no name is given, the first field serves both as name and
as host. The way to refer to a stored host specification is to type {name↑}
in the monitor command line. Note that this name must exactly match the one
in OPTION.TXT, except for the case of letters. (Normally, a host name can
be abbreviated to enough letters to determine it uniquely.) For example,
suppose the host SRI-KL can be abbreviated SRI. Then these commands are
equivalent:
FTP ←{SRI/NICGUEST}<NETINFO>LIAISON.TXT
FTP ←{SRI-KL/NICGUEST}<NETINFO>LIAISON.TXT
but if your OPTION.TXT file contains the line
FTP:{SRI/NICGUEST}
your command must be {SRI↑} and not {SRI-KL↑}.
A9 CARE AND FEEDING OF DEVICES
A9.1 The Line Printer
On the front of the line printer (LPT) there are several buttons (STOP,
START, TOP OF FORM, MANUAL PRINT, TEST PRINT, OFF, and ON) and several
indicators. The normal state of the line printer is with the START button
lit and all red indicators off. (TOP OF FORM is always lit.)
If the system or the spooler reports that the line printer is hung, check
the following things. If the START button is not lit and there are no red
indicators, push the START button. If there are red indicators, NO PAPER or
PAPER LOW ALERT lit, then you have to put in more paper (or fix the paper
that has gone astray).
To reload the paper, find someone who knows how to do it and watch him, or
do it yourself. Reloading the paper is fairly obvious. The front cover
(which includes a transparent section) is hinged at the top; lift it. The
yoke is the assembly which carries the ribbon, the printing drum (which you
can't see) and a rotating disk at the left side. Open the yoke by finding
two toggle switches (one with each hand) and pushing them both down. These
switches are located to the left and right of the yoke and below it. They
are each labeled CLOSE - OPEN. The yoke will stop when it is fully open.
Find four paper tractors, two above the printing hammers and two below.
Each tractor has a sprocket wheel (which pokes through the holes in the edge
of the paper) and a retainer which holds the paper against the sprocket.
Open all the tractors. If the paper is perforated for 8.5 inch wide pages,
be sure that the perforation is closer to the right side. Push the TOP OF
FORM button before loading the new paper. Use the black arrows to align the
"concave" fold. The concave fold is the one where the two adjacent sheets
are front to front when folded. Close the four paper tractors so the
sprockets fit into the holes in the paper. Close the yoke by finding those
two switches and pressing up on both of them. Push START.
Always restart the fan-fold at the back of the LPT so the paper will stack
properly.
The line printer logic can become hung. This condition is identified by the
MANUAL PRINT light being on continuously. Push MANUAL PRINT and then START
to clear this condition. If that fails, open the door on the right side and
push the black button labeled RESET. If that fails, find a wizard.
If the ALARM STATUS light comes on or if the printer starts making a loud
buzzing noise, shut off the printer (push OFF) and find a wizard. (This
light may come on briefly when the printer is being turned on.)
The YOKE OPEN light comes on when the yoke is open while the paper is being
changed. When the yoke is closed it should go off.
The printer has a ribbon that can be changed too. It is best to watch
someone do it before trying it yourself.
A9.2 DECtapes
To mount a DECtape, first assign an available drive. Drives are identified
to the system by a rotary switch labeled 1,2,...,8 corresponding to DTA1,
DTA2, etc. Although there are eight numbers on the switches, there are only
four drives, and the system will not recognize DTA5 and up. Generally you
should have no reason to change the normal setting of these switches. Place
your tape on the left reel of the drive and thread the tape over the top of
the tape guide and head assembly. Wind several turns of the tape onto the
takeup reel (turn the reel clockwise). Finally flip the OFF-WRITELOCK-WRITE
switch to WRITE LOCK, or if you want to write, to the WRITE position.
To unload the tape, wind the tape off the takeup reel by the direction
switch (push it to the left and hold it). Turn the drive off when all the
tape is on the left reel. Grasp the reel firmly and pry it off the hub.
A9.3 Magnetic Tapes
Our magnetic tape drives are seven-track. They are capable of operating at
densities of 200, 556, and 800 bits per inch; the default is 556.
First, decide whether you want to write on the tape or not. If you intend
to write, place one of the plastic write-enable rings in your tape. Place
your tape on the top hub and twist the handle in the hub clockwise to
tighten the reel to the hub. (You can really lose if you don't tighten it
all the way!)
Between the two reels there is a three-position switch labeled START-BRAKES.
Move the switch to the right and hold it there to release the brakes on the
hubs. Unwind the tape until the end of the tape is about a foot from the
floor. Carefully thread the tape into the slot between the reels to the
left of the brake release switch. Wind the tape onto the bottom reel (wind
the reel clockwise). You must be holding the brake release switch to the
right to wind the tape. Wind several feet of tape onto the takeup reel
until you see the metal foil load point marker go by. Then push the brake
release switch to the left (the START position). The tape will hiss and
spin. Hold the switch in START until all motion stops.
There are some control buttons on the top panel. One is labeled (and
lighted) REMOTE-LOCAL; this button toggles. In LOCAL mode, push the REWIND
button. If you're not sure that you have the load point marker on the
takeup reel, push the FORWARD button for several seconds to wind the tape
forward onto the takeup reel until it passes the load point marker, then
REWIND. REWIND positions the tape at load point. Set the drive in REMOTE
and it is all set to use.
Unloading the tape is simple. In LOCAL mode, push the REWIND button. When
the tape finished rewinding, push the brake release switch and manually wind
the tape onto the top reel. Unscrew the hub and remove the reel.
The magnetic tapes are quite finicky and the system software is somewhat
flaky. There are several things that you can do with mag tapes that will
upset the timesharing system and require the intervention of a wizard who
will be angry at you for disturbing his slumber. Never stop your job when
it is operating the tape by typing CALL. Instead, the job can be stopped by
causing the magnetic tape to appear hung. This is done by switching back
and forth between REMOTE and LOCAL until the system stops the job.
There is a reset button for each tape drive located behind the small front
panel below the drive mechanism. This button clears all tape motion
functions in a reasonable way.
A9.4 Xerox Graphics Printer
The normal condition of the XGP is indicated by the green ON light and the
orange READY light being on. If all indicators are off, the XGP main power
has been shut off inside the cabinet, possibly for some reason.
If the red OFF light is on, push the ON light. This will turn the XGP on,
unless some abnormal condition obtains, such as a paper jam near the cutter.
If the orange STANDBY light is on, look inside the panel above these
indicators. The following is the normal state of the indicators and
switches within:
Knobs: TEST PATTERN: OFF
VERTICAL POSITION: leave this one alone
Lights that should be on:
All POWER SUPPLIES lights
(except 10kv and 2.5kv lights will
be off any time there is some other
problem)
All PROCESS INTERLOCK lights
All CONTROL LOGIC (except IN SYNC)
Lights that should be off:
All SUPERVISORY SIGNALS
FAULT
IN SYNC
Certain conditions of the XGP are indicated by lights being OFF. (If any of
the conditions listed below obtains, the 10kv and 2.5kv power supplies will
shut off.)
FWT Fixed wait timer has not run long enough after
being turned on. Wait 2 minutes.
FUSER The fuser is not hot enough.
If the XGP has just been turned on, wait 5 minutes;
otherwise, reset the over-temperature sensor.
The over-temperature sensor is reset by a small
black button located somewhere in the middle of the
fuser wick assembly.
WEB CLEAN
The drum cleaning web must be replaced.
PAPER OUT
Load more paper.
DRUM The drum assembly has been disengaged.
SWEEP PRESENT
The interface is not providing a sweep signal.
This may mean the connector is unplugged or the
interface turned off.
To load a new roll of paper, open the left door of the XGP. Unscrew the
roll retainer and remove the old roll. Unwind a foot of paper from the old
roll and then cut the paper at the roll. Mount the new roll and tape the
front end of the new roll to paper separated from the old roll. Make the
leading edge of the joint as smooth as possible. Using the MOTOR MANUAL
DRIVE button, advance the splice through the machine until it has passed the
cutter.
If any problems develop in this sequence, find a wizard. Beware: certain
parts of the XGP are hot; you can be painfully burned if you touch the wrong
things.
There is a drum cleaning web that runs out at inconvenient times. There is
a small diagram inside the XGP explaining how to change the web.
Toner is icky black stuff that makes the marks on the paper. It gets used
up and runs out too. Someone is supposed to check the toner every day and
add more if it gets too low. If the XGP runs out of toner, the pages will
start getting lighter, there will be occasional black splotches on the
paper, and frequent sand-like particles will be found embedded in the paper.
Toner is checked through the access panel in the back of the XGP. There is
a lever there that adjusts the rate at which toner is used on the paper.
This lever must be placed either at the lightest (inner) setting or one
setting darker. Never, never set it anywhere else.
If you don't like the copy quality, complain to a wizard. Don't adjust
things yourself.
A9.5 User Disk Pack
One or more of the drives in the Ampex disk system are usually reserved for
private disk packs. The drives so designated will be labeled USER PACK.
Use the command ASSIGN UDPn to assign a particular drive before you mount
your pack.
Assuming there is no pack mounted already, you can mount your pack by
following this sequence. Make sure there is nothing on top of the clear
door of the drive you are using. Then push the OPEN DOOR switch and the
door will swing up. Hold your pack by the handle on its top cover and
remove the bottom cover from the pack by squeezing the two handles on the
bottom together. Place the bottom cover on top of the back part of the
drive cabinet. Place the pack (still in the top cover) in the drive unit.
Turn the handle clockwise. It will be somewhat hard to turn. Turn until it
stops. Carefully remove the top cover from the pack and place it on the
bottom cover. Make sure the two covers are aligned to keep dust out of the
enclosed space. Turn the top cover so the label on it is visible from the
front of the drive. Gently push the drive cover down and close it--it will
lock. Push the START-STOP switch to START; the pack will begin to spin.
When the green ready light comes on, the pack can be used. There is a
READ ONLY-R/W switch on the drive; put this switch in the READ ONLY position
if you do not intend to write anything on the pack and put it in R/W
(Read/Write) if you do intend to write on the pack.
To unload the pack, push the START-STOP switch to STOP. When the pack comes
to a stop, press the OPEN DOOR switch; the door will swing up. Take the top
cover whose label corresponds to the label on the pack and place it
carefully over the pack. Turn the handle counter-clockwise until it moves
freely. Lift the pack out of the drive. Place the bottom cover under the
pack and press it on until it latches. The covers help keep dust off the
packs. Return the pack to the storage rack. Leave the label facing
outwards. Gently close the cover on the drive until it locks.
Occasionally, there may be no drives available for user disk packs. If this
happens, a wizard will explain why. Never touch a disk drive unit unless
you have it assigned! Never touch anything but a drive which is marked USER
PACK! If you are confused by something you see, ask about it before you
touch!
A9.6 Core Storage
A hardware-detected parity error in core being used by a user program will
stop that program but will generally not hurt the system otherwise. (There
will be a brief period, while the system is finding the error, during which
it will not respond to characters typed at terminals.) A parity error in
the monitor itself will probably crash the system. It is possible for a
memory error to go undetected if two bits are incorrect in the same word,
but this should be uncommon. If a piece of hardware fails reliably, the
parity error rate may become too high to allow operation of the system.
Another possible problem besides parity errors is a memory stop. This is
usually a temporary problem. It will stop the timesharing system, but it
may be possible to continue from a memory stop without reloading.
Memory errors have never, never been fixed by software means. In
particular, reloading the system never solves the underlying problem. If
the system becomes unusable because of these errors, a wizard should be
found.
A hung memory may be indicated by a console terminal message saying NXM
(non-existent memory). However, a hung memory may also result in the system
stopping with no message at all. Therefore, whenever the system stops
working with no apparent cause, look for a hung memory. There is a MEMORY
STOP light on the KA-10 console, which also indicates this problem. In some
circumstances, a PDP-6 memory stop may also interfere with the operation of
the system.
When the memory has been reset, the system can sometimes be continued. If
possible, find a wizard to fix it. Otherwise, read on. A hung memory can
be identified by:
DEC MG10:AW light off (there are two per cabinet, under "REQUESTS")
Suppes: OK STATUS light off (one per cabinet, in the little box on top)
ARM10LX: AWRQ light off (under "CONTROL STATUS"; try all positions of
the "SECTOR DISPLAY" switch while you're looking)
new Ampex: UA light off (two per cabinet, one in each section)
PDP-6: UA light off (one per cabinet)
Push STOP on the KA-10 and, if it's the PDP-6 memory, the PDP-6. At the
KL-10's console terminal, type control-X followed by SP <return>. Reset the
stopped memory by:
DEC MG10:Push RESET toggle switch (inside the door, near the bottom)
Suppes: Push the big green RESET button near the bottom, then push, in
this order, the three buttons: STOP, CLEAR, CONT. These are
located on the little box on top of the memory.
ARM10LX: Push the four red RESET buttons, one per sector.
new Ampex: Push RESET (the big green-blue button) on Core 0 and Core 1
simultaneously, or Core 2 and Core 3 simultaneously.
PDP-6: push the black CLEAR button inside the cabinet, near the bottom
left, then push the white RESET button on the front of the
small cabinet between the two memory cabinets. You may have to
repeat this a few times to get UA lit.
Once the memory is reset, the computers have to be convinced that nothing
bad happened. To do this on the KA-10, the USER MODE light on the console
must be off. If it is on, first turn on the SINGLE INSTRUCTION switch on
the console, then push CONTINUE. This should turn off the USER MODE light.
Then turn off the SINGLE INSTRUCTION switch. When the USER MODE light is
off, enter 700200 010003 in the data switches and push the EXECUTE key. If
the MEMORY STOP light on the PDP-6 is on, follow the same procedure as on
the KA-10 with these exceptions: Instead of a USER MODE light on the
console, the PDP-6 has an EXEC MODE light at the top of the second bay to
the left of the console; this light must be on for the execute. Also, there
is no SINGLE INSTRUCTION switch on the PDP-6; instead, while the INSTRUCTION
STOP switch is down, push INSTRUCTION CONTINUE once. Finally, push CONTINUE
on the KA-10 and on the PDP-6, and type RN <return> on the KL-10 console
terminal. If the KL is in Executive DDT, you will also have to type
CPOPJ<escape>G.
It is quite possible for a hung memory to leave the system in a state from
which it can't recover. If the above procedure doesn't work, you'll have to
reload, but even that won't work until you reset the hung memory.
A10 HOW TO START WAITS
FIND A WIZARD:
1. Before you fix anything yourself, you should try to find a wizard. Try
paging, or if necessary call one at home.
Phone numbers:
BH (55) 751-1762
JBR (9) 494-3597
ME (9) 329-9081
MRC (9) 941-1096
Little Restaurant (9) 323-6540 (try here around dinnertime)
2. If that fails, you'll have to fix it yourself. Make a note in the log
with the date and time of the failure, and sign it.
CONTINUING THE SYSTEM:
1. Most crashes will print a message followed by:
FIND A WIZARD OR TYPE "CPOPJ$G". $ MEANS ESC. YOU'RE IN DDT.
If it prints this, try typing CPOPJ<escape>G and a couple of returns. If
you get monitor dots, you're winning. Type BEEP and return to tell
everybody the good news, and record what the message was in the log.
2. If after you type CPOPJ$G the same thing happens, try CPOPJ$G again. If
it repeatedly happens, you'll have to reload.
3. If no message at all was printed, the problem may be a memory stop.
Look up the memory stop procedure just above in the Core Storage section of
Appendix 9.
4. If it isn't a memory stop, or some message which doesn't look like the
example in step one was printed, you will have to reload. Try to find a
wizard.
RELOADING:
1. If there has been a power failure, go to 100.
2. If a message such as KL10 Halted ... appears followed by >. at the left
margin go to step 4. The important part is that >. should appear to signify
that KLDCP is listening.
3. Type ↑X (ie, control-X). The response should be KLDCP and a CRLF and a
period. You may sometimes have to wait a few seconds for this response. If
you don't get a period or >. at the left margin, go to 100.
4. Type DS and return. If you get the response DSKDMP go to step 5. If
you don't get DSKDMP as a response to DS, then if the KA-10 is running, stop
it and repeat this step. If you get DEPOSIT/EXAMINE ERROR IN DS then
perform step 102 and repeat step 4. If the KA-10 is stopped and DS doesn't
get you DSKDMP, go to 100.
5. Type WAITS and return to DSKDMP. If the system reloads and starts you
are winning. Otherwise, if the KA-10 is running, stop it and repeat steps 4
and 5. If the KA-10 is stopped and DSKDMP still doesn't work, you need
help.
Don't come here unless directed by the steps above.
100. If the PDP-11 is running and you are talking to KLDCP, go to step 101.
Make sure a DECtape labeled "KL10 bootstrap" is mounted on a PDP-11 DECtape
drive that is selected to unit 0 and is enabled for "remote" (ie, computer)
operation. Press LOAD DECTAPE (located above and to the left of the red
"Emergency Power Off" button) and hold it for at least a slow count to one.
The DECtape should spin and eventually something like TCDP monitor should be
typed. Type in KLDCP and return. KLDCP should load and type a message - go
to step 101. If you don't get to TCDP you might try pressing the LOAD
DECTAPE button again. If you get to TCDP and the KLDCP command doesn't
work, call for help.
101. If there's been a power failure you will have to reload the KL-10's
microcode. Type DT0 LR SU to KLDCP and return. If any error messages are
printed, you need help.
102. [Only if there's been a power failure or in other exceptional
circumstances] After loading the microcode, you must configure the memory
adapter by typing I X4 and return.
103. If the command DS gives the message DSKDMP BOOT NOT LOADED, LD
COMMAND, then load DSKDMP boot into the PDP-11 by LD BOOT and return.
104. You should now be able to perform steps 4 and 5, but if that doesn't
work, you need help.
A11 MONITOR ERROR MESSAGES
This appendix lists the error messages typed by the monitor itself (not by
other system programs) with explanations for some of them. Many have to do
with errors induced by UUOs in your program, and these are explained in the
UUO Manual, in the writeup of the UUO involved. The list is alphabetical;
messages which start with a variable part are sorted under the first fixed
word.
Note: Several of these messages are of the form XXX at user <address>. It
is possible in some of these cases to get XXX at exec <address> instead,
which means that the offending instruction was not in your program, but in
the monitor, which was trying to do something on your behalf when it
happened. If this happens repeatably, or if the message is shortly followed
by a system crash, tell a system programmer.
Address check for Device <dev>
Your program was trying to use the indicated device, and supplied
a buffer address, dump mode command address, or other address
which is outside the bounds of your core image. For dump mode IO,
the command list is too long or contains a loop, or the address of
a word in the command list is illegal, or the address pointed to
by a word in the command list is illegal (possibly because it
points into a write-protected upper segment). In buffered mode
IO, the buffer header address is illegal or the buffers themselves
are improperly formed.
Address out of bounds, UUO at user <address>
Your program executed a UUO which takes as an argument an address
in your core image, and the address was out of bounds. The
address given is that of the offending UUO.
Already assigned to job <job number>
You typed an ASSIGN command, and the device you wanted is in use.
Already attached!
You gave an ATTACH command with your own job number as argument.
Already in use - can't change format
You gave an ASSIGN PUBLIC or ASSIGN PRIVATE command for a UDP
which was already assigned as OLD, or vice versa. The UDP will be
assigned to your job in the same mode as before.
Already in use - can't make private
You gave an ASSIGN PRIVATE or ASSIGN OLD command for a UDP which
was already in use by another job. The UDP will be assigned to
your job as PUBLIC.
? ambiguous job name
Your program gave a MAIL UUO which refers to another job by name,
and there are two or more jobs with that name. If you type
CONTINUE, the UUO will be tried again.
Attempt to initiate SPW job with one already running
Your program has a spacewar module active and is trying to start
another one on the same processor.
Bad directory for Device <dev>
The device is a DECtape. This might mean that the tape is in a
format not recognized by the monitor. (Our system uses a
different directory format from the PDP-10 standard.) It can also
happen if you try to write on a write-locked DECtape.
BAD RETRIEVAL
The pointers to your file on the disk are invalid. See a system
programmer to try to fix it, or report the filename via GRIPE.
Buffer too large for Device <dev>; UUO at user <address>
Your program is trying to use an I/O device for which there is a
limit on the allowable user buffer size, which you exceeded. The
UUO Manual explains the rules for each device.
busy
You gave a TALK command addressed to a terminal which is in user
mode or has characters in its input buffer.
Can't attach device
You gave the privileged ATTACH <device> command and don't have the
DEV privilege.
Can't Attach job
You tried to attach a system phantom job (one which is not logged
in). This requires the ATT privilege unless you are logged in
with the PPN of the phantom, and its programmer name is not SYS.
<dev> can't be reassigned
You gave a REASSIGN command in which the device to be reassigned
was your own terminal. This is illegal.
Can't continue
You typed CONTINUE after one of the other error messages came out,
and you are not allowed to continue the job after that error. You
also cannot continue a job after a SAVE or SSAVE.
Can't detach device
You gave the privileged DETACH <device> command and don't have the
DEV privilege.
CAN'T ENTER-RENAME MFD
If you get this message, see a system programmer, who will eat
you.
Can't FINISH phantom.
You gave a FINISH command with a job number argument, and the job
is a system phantom job. This requires the ATT privilege.
Can't LOCK with segment
Your program, which has an upper segment, gave a LOCK UUO. This
is illegal.
Cons trap at user <address>
You can only get this one from a program running on the PDP-6,
which means it must be a spacewar module. The CONS instruction is
a nonstandard addition to our PDP-6 installed for the benefit of
LISP people. It sometimes gives this message. The address is
that of the CONS which failed.
CORE DEADLOCK.
The monitor's free storage area has expanded enough so that user
core is no longer big enough for your core image. This might fix
itself if you wait a while, but if you must run immense programs
your best bet is to come back at 4am.
Couldn't get you a segment. Will try to let you win with SETPR2.
You tried running a program with an upper segment. The program
was loaded into core, but there is no room in the monitor's job
tables to make an entry for the upper segment. The monitor will
try to simulate an upper segment for you by leaving the upper
segment code in your lower segment, but simulating upper-segment
relocation by the SETPR2 UUO mechanism. This ought to work ok for
most two-segment programs, but just in case it doesn't the monitor
types this warning. If you are writing a two-segment program,
consult the UUO Manual or a system programmer for advice.
Couldn't unpurify upper. Continue to try anyway
You typed a DDT command. JOBDDT in your core image points to an
address in your upper segment as the DDT starting address, and
your upper segment is write protected. DDT and RAID both contain
instructions which modify themselves. The monitor tries to solve
this by unprotecting your upper segment. If you are sharing the
segment with other users, it has to load a new copy for you so the
other users still have a protected one. This might fail, for
example, because there are no job slots available. All highly
unlikely.
<dev> deassigned, but still INITed
You gave a DEASSIGN command for a device which is in use by your
program. This is all OK; the monitor is merely reminding you that
you still control the device. The FINISH command will release it,
if that is what you want.
Detached from system
You gave the PJOB <dev> command and the device you specified has
been made unavailable to users, perhaps because it is not working.
Device <dev> isn't ready
The device is somehow disabled. If it's a mag tape, it may be in
LOCAL mode. The line printer could be out of paper. You can fix
the problem and type CONTINUE.
Device <dev> may be unloaded
You gave a DEASSIGN command for a UDP and no one is now using it
so you can unload the pack.
? Device <dev> not available
The device specified in a RUN, R, GET, SAVE, or SSAVE command was
unavailable to your job.
Device <dev> still in use - DON'T unload
You gave a DEASSIGN command for a UDP which is still being used by
someone.
DISK IS FULL!
Your program is trying to write a file on the disk, and there is
no room. If you delete some files (using another job!), you can
type CONTINUE and the file will be written.
DISK TRANSMISSION ERROR
This is a disk failure. See a system programmer.
Enter failed.
The filename you typed to "Enter needed." (see below) didn't work,
probably because of a protection failure.
? Enter failed
The file specified in a SAVE or SSAVE command cannot be written,
probably because of a protection failure.
Enter needed. Please type file name:
Your program tried to write on the disk or a DECtape without doing
an ENTER UUO to specify the filename. You are given the
opportunity to specify a file.
ERROR IN DSKSER
Horrible error in the monitor disk service routine. See a system
programmer.
? Error in job <job number>
This message will appear along with one of the others. The only
reason you might need it is if you are running more than one job
at once (through a PTY, for example).
Error in monitor
This message is usually followed closely by a system crash. Call
a systems programmer.
File already exists. Is it OK to delete it?
The filename you typed in response to "Enter needed." (see above)
already exists. If you type Y (and RETURN), it will be replaced
with the new output; otherwise, you will be asked for another
name.
Finish what?
You typed a FINISH command with an argument and weren't using that
device (or there is no such device).
Gotcha!
This is not an error. You get it when you are in a device wait
queue and your turn for the device comes.
Halt at user <address>
Your program executed a JRST 4, instruction. You are allowed to
CONTINUE the job after this message. The address typed is the
address containing the HALT instruction, not its effective
address. If you type CONTINUE, the program will be continued at
the address specified in the effective address of the JRST 4,.
Hung Device <dev>
The device did not respond properly to your attempt to use it in
some predetermined time. This probably means that the device is
unusable for some hardware reason.
I-level UUO when not at I-level, UUO at user <address>
Your program tried to execute a UUO which is only allowed in a
user interrupt routine, when it was not servicing an interrupt.
Ill mem ref at user <address>
Your program tried to read or write an address greater than the
size of its core image. The offending instruction is at the
address typed, or possibly at one beyond that address (e.g., if
the error occurred on a non-final write cycle of a BLT
instruction).
Illegal attach loop
Your program is typing into a pseudo-teletype and gave an ATTACH
command trying to attach its controlling job. In particular,
people using the system via the ARPA network get this if they try
to attach to their TELNET server job. (You also get it if you try
to attach the job controlling the PTY controlling the job
controlling you, etc.) Typed on the PTY.
Illegal data mode for Device <dev>
Your program has tried to use an I/O device in an undefined way,
e.g., binary I/O to a terminal. The UUO Manual discusses data
modes for each device.
ILLEGAL DD CHANNEL.
Your program is trying to use a Data Disc channel to which it is
not allowed access.
ILLEGAL FORMAT DUMP MODE COMMAND LIST
Your program is trying to do dump mode I/O incorrectly. See the
UUO Manual.
Illegal I-level call, UUO at user <address>
Your program executed at interrupt level a UUO which is not legal
at interrupt level.
ILLEGAL INSTR. ADDRESS.
This message refers to instructions in a display program your job
is running.
Illegal instruction at user <address>
Your program executed an undefined instruction or one which is not
allowed in user mode. Could be a KL-only instruction on the
KA-10.
Illegal old-style access to new format UDP. UUO at user <ADDRESS>
You have given an ASSIGN OLD command for a UDP, and mounted a pack
which has been formatted for file-structured use, and your program
tried to write on the pack (gave an ENTER UUO).
ILLEGAL PAGE SIZE SPEC.
You are trying to adjust the page printer geometry incorrectly on
a display terminal.
ILLEGAL PIECE OF PAPER
Your program gave a PPIOT UUO which specified a piece of paper
number greater than 17 (octal). See the UUO Manual.
Illegal protection code
You gave a SETUWP or CLRUWP command with an argument greater than
1000 octal.
Illegal UUO at user <address>
Your program executed a UUO which the monitor does not recognize.
(Probably you are trying to execute data.)
in use
You gave the FLUSH command and the specified terminal is in use.
You can flush it anyway if you first say ENABLE UPG.
Input Device <dev> cannot do output
Your program has done something silly like trying to write on the
paper tape reader.
Input Device <dev> has no input buffer header, UUO at user <address>
Your program executed an input UUO in buffered mode, and had not
provided an input buffer header when it opened the device.
Interrupt address out of bounds
Your program has enabled user interrupts and specified an
interrupt address which is not in your core image.
Interrupt enablings conflict, UUO at user <address>
Your program tried to enable both old-style and new-style
interrupts in a conflicting manner.
Intgen of non-enabled interrupt, UUO at user <address>
Your program tried to use the INTGEN UUO to send itself or another
job an interrupt for which the job was not enabled.
I/O to unassigned channel at user <address>
Your program executed an I/O UUO specifying an I/O channel which
was not opened. See the UUO Manual about channels and I/O.
<dev> is busy, will you wait?
Your program tried to open a device which another job is using.
If you say Y (then RETURN), your job is placed in a queue of jobs
waiting for the device, and will be continued automatically when
it's your turn. If you say N, you are then asked "Would you do IO
to the disk instead?" and can again say Y or N. If you say Y, you
may be asked for a filename (if your program does input or output
on that channel without specifying a name). If you say N again,
your program gets a failure return on the INIT or OPEN UUO.
JMS NOT LEGAL; USE JSR.
Your program set up a III display program with the forbidden JMS
instruction in it. See the UUO Manual.
Job capacity exceeded
The maximum allowable number of users are already logged in. Try
again later.
LINKS STILL ACTIVE
Your program tried to re-initialize the system IMP tables in order
to bring the IMP back up and someone else is still using the IMP.
Logical name already in use, <dev> Assigned
You typed an ASSIGN command with a logical device name argument
which you were already using for another device. The device you
requested is assigned to your job, but the logical name still
refers to the old device.
Login please
You typed a command which requires that you log in first.
Lookup failed.
The filename you typed in response to "Lookup needed." (see below)
could not be read. (It doesn't exist or is read protected against
you.) You will be asked to type in another name.
Lookup needed. Please type file name:
Your program tried to read from the disk or a DECtape without
specifying a file by executing a LOOKUP UUO. You are given the
chance to specify the file to read.
Must assign Device <dev>; UUO at user <address>
Your program tried to INIT a UDP which hadn't been ASSIGNed. You
must give the ASSIGN command to set the mode of pack to be used
before you can use a UDP.
NEED ENTER BEFORE OUTPUT
NEED LOOKUP BEFORE INPUT
You get these messages if your program opens a directory device,
closes a file, and then tries to do input or output on that
channel without another LOOKUP or ENTER.
Need TTY or PRG
The argument to the TALK command must be either the name of a TTY
or something which might be a programmer name, i.e., up to three
letters or digits.
No <dev>'s available
You typed an ASSIGN command with a generic device name (e.g.,
MTA), and all of them are in use.
No core assigned
You typed a command which refers to your core image (e.g., DE or
START), and you don't have a core image.
No DDT
You typed a DDT command, and your core image does not contain DDT
or RAID (JOBDDT zero).
No other detached jobs with same PPN.
You typed the ATTACH command with no argument, trying to attach
another job of yours, and there was no such job to attach.
No Reenter address
You gave a REENTER command and your program has no REENTER address
(JOBREN is zero).
No starting address
You gave a START, R, or RUN command and the program has no
starting address (JOBSA zero).
No such device
You typed something the monitor did not recognize when a device
name was required.
No such job
You gave a command with a nonexistent job number as argument,
e.g., ATTACH, KILL, or TTY WHO.
No such privilege
The privilege name specified in an ENABLE or DISABLE command does
not exist.
No such TTY number
You gave a TALK command to a nonexistent TTY.
No upper segment
You typed a SETUWP or CLRUWP command and your core image does not
include an upper segment.
? Non-ex job name or number
Your program gave a MAIL UUO addressed to a nonexistent job. If
you type CONTINUE, the UUO will be tried again.
Non ex mem at user <address>
This can't happen, it says here. It means that your program tried
to address a word of core storage which does not exist. However,
we have the maximum possible amount of core, so there shouldn't be
any nonexistent addresses. Possibly a hardware failure could
cause this. (If you are running a spacewar module which resets
its relocation and protection registers when for some reason we
are running with less than the full amount of core, you can get
this legitimately.)
? not a dump file
The file specified in a RUN, R, or GET command is not in dump file
format.
NOT A NEW FORMAT UDP
You have typed an ASSIGN PUBLIC or ASSIGN PRIVATE command for a
UDP, and mounted a pack which has not been formatted for
file-structured use. The error is not detected until your program
tries to perform some operation on the UDP. See a system
programmer about formatting your pack.
Not a TTY
You gave the FLUSH command with an argument which is not the name
of a terminal. (Might be a nonexistent TTY numbber.)
Not enough core
You typed a CORE command with an argument greater than the maximum
core available to a user job.
? <filename> not found
The file specified in a RUN, R, or GET command was not found. If
the problem is not a spelling error, make sure you are not
aliased.
Not logged in at ungagged TTY
The programmer name you typed as argument to a TALK command was
not logged in, or was logged in at a TTY which is gagged.
Out of bounds
Some numeric argument to a monitor command wasn't right. This
could be an address not in your core image in a DE or E command.
Output Device <dev> cannot do input
Your program has tried to do something silly like read the line
printer.
Output Device <dev> has no output buffer header, UUO at user <address>
Your program executed an output UUO in buffered mode and did not
provide a buffer header when it opened the device.
? <n> pages of core needed
You tried to run a program and asked for less core than it needs
to run or for more core than a single job can have. In either
case, <n> is the minimum amount of core (in 512-word pages) needed
to run the program, unless the program was on a mag tape, in which
case <n> is the amount of core you asked for and is more than you
can have.
Parity error in your core image at location <address>
Parity error in your upper segment at location <address>
A hardware failure has invalidated the contents of the indicated
address in your core image. The safest thing to do in this case
is to restart with a fresh copy of your program. If you were
running for a long time and are willing to risk continuing, you
can type CONTINUE. You can also try to fix the bad location with
DDT or RAID, if present, or with the DE and E commands.
PC exceeds mem bounds at user <address>
Your program tried to jump to an address outside the range of your
core image. The message, unfortunately, tells you the illegal
address rather than the address of the jump instruction.
Pdl ov at user <address>
Your program had a pushdown list overflow. The address typed is
the effective address of a PUSHJ, the return address for POPJ, or
the address following a PUSH or POP.
PIECE OF GLASS TOO BIG
Your program is trying to run a display program which is too big
for the monitor to handle. Sorry.
Please Kjob or Detach
You gave a LOGIN command when you were already logged in.
Please specify a TTY
The programmer name you typed as argument to the TALK command is
logged in at more than one terminal. You must give another TALK
command, using a particular TTY name as argument instead of the
programmer name.
Please type ↑C first
You started your program with CSTART or CCONTINUE, leaving your
terminal in monitor mode, and then typed a command which affects
your core image. Such commands cannot be processed while the
program is running. Type CALL and try again.
PPN mismatch
You typed an ATTACH, FINISH, RESET, or KILL command, and the job
number and PPN arguments did not agree.
Protection failure
You typed a SETUWP or CLRUWP command, and are not permitted to
change the write protection of your core image's upper segment.
? SAVE/GET IO error
You got an IO error from trying to save or get a core image. Try
again. If it still fails, ask a wizard for help.
Spacewar lossage - <error>
The error indicated can be "Ill mem ref", "PC exceeds mem bounds",
"Non ex mem", "Pdl ov", "Cons trap", or "Time out". It means that
your job started a spacewar module (see the UUO Manual), which
caused the error. "Time out" means that your spacewar module did
not have the timeout-suppression bit set and used up the maximum
amount of uninterrupted time allowed in a single run. For the
other errors, see the particular error message in this list for an
explanation.
Spacewar request for P2, but P2 is hung.
Your program is trying to run a spacewar module on P2 (the KA-10),
which is not responding. Get a system programmer to fix it.
SWAP READ ERROR
Your job was swapped out of core, and when the monitor tried to
read it back in, there was a hardware error on the swapping disk.
Your core image is probably gone forever. If you really need it
badly, you might be able to persuade a system programmer to try to
recover it for you, but even then there's not much chance. Start
over.
Too few arguments
This error message can be typed by several different monitor
commands and should be self-explanatory.
TOTAL DPY BUFFER SPACE EXCEEDED.
Your program is trying to run a III display program, and there is
no more room in your allocation of display buffer space.
TTY not in use
You gave a TALK command to a PTY which is not in use; you can
establish a TALK link to an unused physical TTY but not to a PTY.
UDP OFFLINE OR WRITE LOCKED
Your program has tried to perform some operation on a UDP, and
there is no pack mounted, or the drive is not turned on, or it
does not have its ID plug inserted in the front panel, or it is
switched to read-only and your program tried to write on it.
(Upper not saved)
You gave a SAVE command and you have an upper segment; SAVE does
not include the upper segment in the dump file written. To have
the upper saved also, use the SSAVE command. (You can give the
SSAVE command after getting this message from SAVE if you decide
you want the upper saved too.)
Use "KJOB" to log yourself out
You typed a KILL command with your own job number as the argument.
$$ USER DPY ERROR AT <address>
This message comes along with another which explains the error in
your display program. The address is that of the offending
instruction.
User Interrupt-Level <error>
The error can be "ill mem ref", "NXM", or "pdl ov". See the
associated message in this list for an explanation (see Non ex mem
for NXM). The error happened in your program's interrupt routine.
If it says "CH3 error" instead of one of the above, see a system
programmer.
User Interrupt-Level attempt to schedule, UUO at user <address>
Your program's interrupt routine executed a UUO which would put it
in a wait state. User interrupt routines aren't allowed to do
that. See the UUO Manual.
User Interrupt-Level timeout
Your program's user interrupt routine has run longer than the
maximum time allowed. (No other user can run while an interrupt
routine is in progress, which is why they are limited in time.
See the UUO Manual about interrupts.)
UUO at user <address>
This line appears with certain other messages. It tells you the
location in your core image of the instruction which caused the
error.
<dev> wasn't assigned
You gave a DEASSIGN or REASSIGN command and hadn't assigned the
device.
wasn't detached
You gave the privileged ATTACH <device> command and have the
privilege, but the device wasn't detached.
YOU ARE LOCKED OUT OF CORE!
The amount of user core available has been reduced by other jobs
starting spacewar modules (thereby being locked in core). There
is not enough room to fit your core image. This condition may fix
itself quickly; the message does not return you to monitor mode,
but will keep appearing every so often until you fit again. If
you have a really huge program, run it late at night (e.g., 4am).
You can't have it
You gave an ENABLE command asking for a privilege other than LIV,
LUP, or UPG.
A12 BIBLIOGRAPHY
This appendix lists various other sources of information about system
programs. Some of these are available on the disk, some are printed. Some
programs, which were not written here but came from DEC, are documented in
DEC manuals. Other programs, documented on the disk, are not included here;
only the major processors are listed. The files AIMS[BIB,DOC],
AIMS.OLD[BIB,DOC], SAILON[BIB,DOC], and PRUNE.DAT[UP,DOC] list other program
documentation which may be of interest. A convention used in naming [S,DOC]
and [UP,DOC] files is that the filename is the name of the program being
documented, and the extension is the programmer name of the author. An
update file for a program's documentation will have a file name matching the
program name with the extension being .UPD. Programmers should have a UUO
Manual, SAILON 55.5, which describes the monitor interface for user
programs. This manual is online as UUO.ME[S,DOC].
SAILONs (Stanford Artificial Intelligence Laboratory Operating Notes) and
AIMs (Artificial Intelligence Memos) are generally available in printed form
from the project secretaries. Try this before making your own listing.
EDITORS:
E E.ALS[UP,DOC] is the manual for the display editor.
SOS SOS.LES[S,DOC], SAILON 50.3, is the reference manual for SOS.
TECO There is a DEC manual which documents standard DEC TECO. The
file TECO.MRC[UP,DOC] documents the version run here, but you
should read the DEC manual first.
LANGUAGE PROCESSORS:
FAIL FAIL.REG[AIM,DOC], AIM 226, is the reference manual.
SAIL SAIL.KVL[AIM,DOC], AIM 204. This is a long manual; try to get
the printed version instead of spooling a copy.
MACRO This is a DEC program.
F40 This is the DEC FORTRAN.
LISP Our main dialect, MACLSP, is described in LISP.RPG[S,DOC].
PUB PUB.TES[S,DOC], SAILON 70, describes the PUB Document Compiler.
See also PUB.UPD[S,DOC] for updates.
DEBUGGERS:
RAID The display terminal debugger is described in RAID.PMP[S,DOC],
SAILON 58.1.
DDT The non-display debugger is a DEC program. See DDT.REG[UP,DOC]
for a quick summary.
BAIL The SAIL program debugger is described in BAIL.DOC[DOC,AIL], AIM
270.
A13 STANFORD CHARACTER SET
The Stanford ASCII character set is displayed in the following table. The
three digit octal code for a character is composed of the number at the left
of its row plus the digit at the top of its column. For example, the code
for "A" is 100+1 or 101.
ASCII 0 1 2 3 4 5 6 7
↓↓↓
000 NUL ↓ α β ∧ ¬ ε π
010 λ TAB LF VT FF CR ∞ ∂
SIXBIT 020 ⊂ ⊃ ∩ ∪ ∀ ∃ ⊗ ↔
↓↓ 030 _ → ~ ≠ ≤ ≥ ≡ ∨
00 040 SP ! " # $ % & '
10 050 ( ) * + , - . /
20 060 0 1 2 3 4 5 6 7
30 070 8 9 : ; < = > ?
40 100 @ A B C D E F G
50 110 H I J K L M N O
60 120 P Q R S T U V W
70 130 X Y Z [ \ ] ↑ ←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | ALT } BS
The tables below display the standard ASCII codes, and the SOS
representation used at Stanford for entering the full Stanford ASCII
character set from non-displays with restricted character sets. The obscure
names for the ASCII codes below 40 are listed just for confusion. Notes:
"DEL" (177) is the ASCII delete. "ESC" (33) is their alt mode. Codes 136
and 137 have two different interpretations, as shown below. The SOS
representation is so called because it is provided by SOS, the non-display
editor. Certain other programs also know about this representation, but it
is not built into the monitor in any way. See also Section 3 for special
system treatment of certain characters from non-displays.
Standard ASCII
0 1 2 3 4 5 6 7
000 NUL SOH STX ETX EOT ENQ ACK BEL
010 BS TAB LF VT FF CR SO SI
020 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
030 CAN EM SUB ESC FS GS RS US
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ?
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ∧↑ _←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | } ~ DEL
SOS Representation
0 1 2 3 4 5 6 7
000 --- ?! ?" ?# ?$ ?% ?& ?'
010 ?( TAB LF VT FF CR ?) ?*
020 ?+ ?, ?- ?. ?/ ?0 ?1 ?2
030 ?9 ?6 ?4 ?= ?< ?> ?7 ?8
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ??
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ↑ ←
140 ?@ ?A ?B ?C ?D ?E ?F ?G
150 ?H ?I ?J ?K ?L ?M ?N ?O
160 ?P ?Q ?R ?S ?T ?U ?V ?W
170 ?X ?Y ?Z ?[ ?: ?3 ?] BS
INDEX
@ command 53
activation 17
activation character 16, 18
activation characters 17
ADC device 8
add channel 24
add piece of glass 26
addresses, core 5, 11
ADVANCE command 113
AL 55
AL switch in SNAIL 60, 72
ALGOL 5
alias 5, 19, 36, 38, 39, 52
ALIAS (in WHO display) 49
ALIAS (in WHO line) 19
ALIAS command 39
ALL switch in COPY 79
ALT 29
ALT key 15
alt mode 15, 143
ALT MODE, non-display 29
APPEND switch in MAIL 95
arguments 7
ARPA network 8, 29, 50, 52, 53, 98, 100, 122
ARPA switch in MAIL 95
ARROW (in TTY command) 31
ARROW (LOGIN option) 41
ASCII 15, 123, 143
ASCII switch in COPY 79
ASK switch in COPY 79
ASK switch in SPOOL 82
assembly language 5
ASSIGN command 8, 37
Associated Press 41, 53
ATSIGN program 53
ATT privilege 36, 54
ATTACH command 36, 42, 54
AUDIO (LOGIN option) 41
audio switch 27, 41
authorized users 9
available channel 24
backspace 15
BACKSPACE command 113
backspace, deleting 16
backspace, non-deleting 16
BAIL 55, 142
BAIL switch in SNAIL 65, 72
bams 114
BATCH command 107
BEEP 27
BEEP (in TTY command) 31
BEEP (LOGIN option) 41
BEEP command 54
beeping, automatic 27, 41
bibliography 142
BINARY switch in COPY 79
binary, relocatable see relocatable binary
BLINK (in TTY command) 28
BLISS 55
BLISS switch in SNAIL 60, 72
BLOCKED switch in COPY 79
BMAR switch in XSPOOL 86
BOLD (in TTY command) 28
BOLD (LOGIN option) 41
BOOK command 56
book mode 56
BOW (LOGIN option) 41
BREAK 18
BREAK (in TTY command) 31
BREAK 1 X 19, 31
BREAK A 24
BREAK B 27
BREAK C 21
BREAK CALL 23
BREAK CLEAR 23
BREAK D 24
BREAK F 18, 31
BREAK G 24
BREAK H 22
BREAK key 15
BREAK L 24
BREAK M 23
BREAK N 20
BREAK O 18
BREAK P 20
BREAK Q 19
BREAK R 23
BREAK S 24
BREAK T 24
BREAK U 27
BREAK W 19
BREAK X 19, 31
BS 16
BS (in TTY command) 28
BS (LOGIN option) 41
BS key 15
bucky bit (non-display escape) 30
bucky bits 15
CALCOMP 8
CALL 18, 19, 29, 35, 39
CALL key 15
call, deferred 18
cameras, TV 22
CANCEL command 111
CAR device 8
carriage return 15, 17, 29, 31, 41
CC switch in MAIL 95
CCONTINUE command 35
CDETACH command 36
CETV command 10, 56
CFORK command 36
channel number 24
channels, Data Disc 6, 19, 22, 38, 54
channels, private 22, 41
channels, public 22
CHAR (job queue) 19
character conversion, non-display 29
character set 6, 15, 143
character set, full 18
CLEAR 16
CLEAR key 15
clear line editor 16
clear page printer 20
CLRUWP command 34
CMQ (job queue) 19
code, character 15, 143
command decoder 7, 15, 16
command files 47
commands, monitor 7
commercial-free radio 27
COMPILE command 11, 60
COMPILE switch in SNAIL 60, 64, 72
compiling programs 11
complaints, compliments, criticisms 102
CONLY switch in SNAIL 60, 64, 72
continuable 35
CONTINUE command 19, 35
CONTROL 47
CONTROL and META (non-display escape) 30
CONTROL key 15, 123
CONTROL key, non-display 29
CONTROL-B 16
CONTROL-B, non-display 29
CONTROL-BREAK 18, 20
CONTROL-BS 16
CONTROL-C, non-display 29
CONTROL-CALL 18
CONTROL-CLEAR 18, 20
CONTROL-D 16
CONTROL-FORM 16
CONTROL-I 16
CONTROL-I, non-display 29
CONTROL-K 16
CONTROL-K, non-display 29
CONTROL-L 16
CONTROL-L, non-display 29
CONTROL-META-BS 16
CONTROL-META-LINE 18
CONTROL-META-SPACE 16
CONTROL-number 16
CONTROL-O, non-display 29
CONTROL-R 16
CONTROL-RETURN 16, 17
CONTROL-S 16
CONTROL-SPACE 16
CONTROL-T 16
CONTROL-TAB 16
CONTROL-U, non-display 29
control-underscore 30
CONTROL-Z, non-display 29
CONVERT (in TTY command) 31
CONVERT (LOGIN option) 41
CONVERT switch in COPY 79
COOKIE (LOGIN option) 41
COPY 44, 75
COPY command 44
core see storage, core
CORE command 34
core image 5, 7, 11, 13, 19, 32, 34, 40, 49
COUNT switch in MAIL 95, 97
crash 138
CREATE command 56
CREF command 71
CREF switch in SNAIL 64, 71, 72
CSTART command 35
CTRL key, non-display 29
CTY device 8
cursors 6, 16
DAC device 8
DART 46, 113
data 8
Data Disc queue 23
Data Discs 6, 14, 16, 19, 20, 21
Datamedia 6
DATAMEDIA (in TTY command) 28
Datamedias 20, 28
DATE (in WHO line) 19
DATE switch in MAIL 95, 96
DAY (in WHO line) 19
DAY filehack in COPY 77
DAYTIME command 7, 38
DCQ (job queue) 19
DD (in WHO line) 19
DDT 34, 35, 55, 65, 142
DDT command 35
DDT switch in SNAIL 65, 72
DDT, Executive 54
DE (deposit) command 34
DEASSIGN command 37
DEBUG command 60
debugging program see DDT or RAID
DECIDE command 53
DECtape 8, 19, 48, 132
default file protection, UFD's 79
Defense, Department of 122
deferred call 18
delete 15, 143
delete channel 24
DELETE command 44, 80
delete piece of glass 26
DELETE switch in SPOOL 82
deletion of REMINDers, LATER requests, and queued MAIL 111
DENSITY switch in COPY 79
deposit in core see DE
DET (in WHO display) 49
DET (in WHO line) 19
DETACH command 36, 54
detached jobs 19, 36, 47, 49
DEV privilege 54
device 37, 38, 131
device name 8, 54
device name, logical 8, 37
device name, physical 8, 37
device names, list of 8
DIAL command 53, 123
DIGEST (LOGIN option) 41
DIGEST filehack in COPY 77
DIOW (job queue) 19
directories 8
DIRECTORY command 44, 80
directory device 8, 37
directory, telephone 51
DIRED program 53
DISABLE command 54
disk 8, 19, 33, 37, 38, 39, 44, 46, 48
disk PPN 5, see alias
display see terminals, display
DIST switch in MAIL 95
DLN device 8
DM (in TTY command) 28
DM (in WHO line) 19
DM (LOGIN option) 41
DM128 (in TTY command) 28
DM128 (LOGIN option) 41
DM128=n (LOGIN option) 41
DM=n (LOGIN option) 41
DMP files 8, 11, 33, 72
DO 59, 67
DO command 47
documentation, program 5, 142
double bucky 15
DOWN filehack in COPY 77
DRD command 53
DSK device see disk
DSKF (in WHO line) 19
DSKOPS (in WHO line) 19
DSKQ (in WHO line) 19
DSKSIZ command 52
DSPOOL switch in COPY 79
DTA device see DECtape
DTN command 53, 122
DTQ (job queue) 19
DUMP command 113
dump file see DMP files
DUMP switch in SPOOL 82
DUMPED switch in COPY 79
DWQ (job queue) 19
E 10, 15, 18, 55, 142
E (examine) command 34
E switch in MAIL 95
EBOX msec (in TIME command) 38
ECHO (in TTY command) 31
ECHO (LOGIN option) 41
EDDT command 54
EDIT command 56
editing 10
editor, display 10, 56
editor, line see line editor
EFIND command 51
ELF device 8
ENABLE command 54
end of file 18, 29
EOT command 113
EREAD command 56
error messages 141
ESC 18
ESC * 18
ESC + 18
ESC 1 X 19, 31
ESC A 24, 26
ESC B 27
ESC C 21
ESC CALL 23
ESC CLEAR 23
ESC D 24, 26
ESC E 20
ESC F 18, 31
ESC FORM 20
ESC G 20
ESC H 18, 22
ESC I 18
ESC J 20
ESC key 15
ESC L 20
ESC M 23
ESC N 20
ESC O 18
ESC P 20
ESC Q 19
ESC R 20
ESC S 24, 26
ESC T 24
ESC U 27
ESC V 18
ESC W 19, 36
ESC X 19, 31
ESC Y 20
ESC Z 27
ESCAPE (in TTY command) 31
ESCAPE, non-display 29
ETV command 10, 56
ETV editor see E
EVEN switch in COPY 79
EVENT command 103
examine core see E
EXECUTE command 11, 60
EXPAND switch in MAIL 95
extension 8
extensions, standard 8
EXTRA switch in COPY 79
EXTRA switch in SPOOL 82
F4 switch in SNAIL 60, 72
F40 55, 142
FACT.TXT file 82
FAIL 5, 55, 142
FAIL switch in SNAIL 60, 72
FASM 55
FAST (LOGOUT option) 42
FAST switch in COPY 79
FDM (LOGIN option) 41
FDM128 (LOGIN option) 41
FDM128=n (LOGIN option) 41
FDM=n (LOGIN option) 41
FF switch in SPOOL 82
file access groups 41
file directory see directory
file protection 41
file storage 8
File Transfer Protocol 53, 122, 127
filenames 8
FILES command 18, 38
files, disk 8, 19
FILL (in TTY command) 31
FILL (LOGIN option) 41
FIND command 51
FINGER command 12, 42, 52
FINISH command 37
FIXIMLAC command 53, 121
FLUSH command 37, 54
FNOTABS (LOGIN option) 41
FONT switch in COPY 79
FONT switch in XSPOOL 86
FOO switch in COPY 79
FORK command 36
form feed 15, 29, 77
FORM key 15
FORTRAN 55, 142
FORTRAN switch in SNAIL 72
FORTRAN switch in SPOOL 82
fortune cookie 41
FORWARD filehack in COPY 77
FORWARD switch in SNAIL 67, 72
forwarding, mail 99
FRM device 8
FTABS (LOGIN option) 41
FTP command 53, 122, 127
FUDGE2 66
FULL (in TTY command) 31
FULL (LOGIN option) 41
full character set mode 18, 41
FULL switch in COPY 79
gag 39
GAG (in TTY command) 31
GAG (LOGIN option) 41
GET command 33
GLASS (in TTY command) 31
GLASS (LOGIN option) 41
glass TTY 29
glass, pieces of 20, 26
glitch 20
GOLD filehack in COPY 77
graphics 6, 20
GRIPE (LOGIN option) 41
GRIPE command 102
GRIPES filehack in COPY 77
GTOTAL switch in COPY 79
guest user 41
HALT command 35
HANG (in TTY command) 31
HEADER switch in COPY 79
HEADER switch in MAIL 95
HEADING switch in SPOOL 82
HELLO command 38
HELP command 12, 52
hide 18
HIDE (LOGIN option) 41
HOLD switch in SPOOL 82
holding 18
holding, automatic 20
home terminal 23
HOT command 53
I/O see device
IGNI switch in COPY 79
IGNO switch in COPY 79
III (in WHO line) 19
IIIs 6, 14, 16, 20, 26
IMLAC 53
IMP device 8, 122
Increment (in TIME command) 38
information, system 5, 12, 38, 49
INIT (LOGIN option) 41
input buffer 7, 17, 18, 47
Interface Message Processor see IMP
interrupt 15
Introduction for New Users 3
Introduction to Terminals 6
INTW (job queue) 19
IOWQ 19, 35
IOWQ (job queue) 19
JBS (in WHO line) 19
JLOG 36, 49, 54
JOB (in WHO display) 49
JOB (in WHO line) 19
Job Data Area 13, 34, 35
job name 33, 49, 52
job number 5, 7, 9, 36, 37, 38, 39, 49, 52
JOBDDT 34, 35
JOBFF 34
JOBNAM (in WHO display) 49
JOBNAM (in WHO line) 19
JOBPC 35
JOBRD 19
JOBREN 35
jobs 19
JOBSA 13, 35
KA-10 19, 49
KATTACH command 42
keyboard mapping 22
keyboard scanner 15, 18
keyboard, SUMEX 28
keyboards 15
KILL command 39
KILL switch in COPY 79
KIM device 8
KJOB command 9, 42
KL-10 19, 49
KL-10 console 54
KLOG command 42
L switch in E 56
languages, programming 5, 142
LATER command 106
LATER requests, deleting 111
letters, lower case 7, 8, 18, 29, 31
LIBRARY switch in SNAIL 60, 66, 72
LINE see line feed
LINE (in WHO display) 49
LINE (job queue) 19
line editor 6, 15, 16, 17, 18, 20
line feed 15, 29
LINE key 15
line number, terminal 24, 38, 49
line numbers, SOS 10, 79, 82
line printer see printer, line
LINK 55
LINK switch in SNAIL 65, 72
LISP 5, 47, 142
LISP command 53
LIST command 44, 80
LIST switch in COPY 79
LIST switch in MAIL 95
LIST switch in SNAIL 64, 72
LIV privilege 5, 54
LMAR switch in XSPOOL 86
LOAD (in WHO line) 19
LOAD command 11, 60
LOADER 34, 35, 55, 72
LOADER switch in SNAIL 65, 72
loader switches 69, 73
loading programs 11
local user 41, 53, 54
LOCATE command 113
LOCK 19
logical device name see device name, logical
LOGIN command 5, 7, 9, 41
login, automatic 7
LOGOUT 9, 10, 42
LOGOUT command 42
logout, automatic 5
LOGOUT.MSG file 42
LOGRUN 41
LOGRUN (LOGIN option) 41
LONLY switch in SNAIL 60, 64, 72
lower segment 13
LPT device see printer, line
LPT0 switch in SPOOL 82
LPT100 switch in SPOOL 82
LUP privilege 54
MACRO 55, 142
MACRO switch in SNAIL 60, 72
MAGIC 25
magnetic tape 8, 19, 33, 37, 46, 133
MAIL 41, 45, 89, 90
MAIL command 41, 99
MAIL error recovery 108
MAIL filehack in COPY 77
MAIL switch in MAIL 95
MAIL$E.TXT file 91, 108
mail, ARPA network 98
mail, deleting queued 111
MAIL, interfacing with, from other programs 110
maintenance mode 41
MAKE command 56
MAP switch in SNAIL 65, 72
mapping 23
mapping, keyboard see keyboard mapping
MAS access group 41
ME (LOGIN option) 41
ME (LOGOUT option) 42
memory stops 136
MESSAG (LOGIN option) 41
messages, sending and mailing 90
messages, system 9, 41, 99, 103
META 16, 47
META key 15
META-BS 16
META-CALL 18
MICRO-PLANNER 5
MIDAS 55
MIDAS switch in SNAIL 60, 72
MLENGTH switch in COPY 79
MODE switch in SPOOL 82
monitor mode 7, 9, 15, 18, 33, 35, 36
MSG filehack in COPY 77
MTA device see magnetic tape
MTQ (job queue) 19
Multics 127
N switch in E 56
NAP filehack in COPY 77
NARROW switch in SPOOL 82
New York Times 53
news service see NS
NL (in WHO line) 19
NO switch in MAIL 95
NOARROW (LOGIN option) 41
NOBOLD (LOGIN option) 41
NOBOW (LOGIN option) 41
NOBS (LOGIN option) 41
NOCMFI switch in SNAIL 60, 72
NOCONVERT (LOGIN option) 41
NOCOPY switch in SPOOL 82
NODELETE switch in SPOOL 82
NODIST switch in MAIL 95
NODMP switch in SNAIL 60, 65, 72
NODUMP switch in SNAIL 65
NODUMP switch in SPOOL 82
NOECHO (LOGIN option) 41
NOFF switch in COPY 79
NOFF switch in SPOOL 82
NOFILL (LOGIN option) 41
NOFORTRAN switch in SPOOL 82
NOFULL (LOGIN option) 41
NOGAG (LOGIN option) 41
NOGLASS (LOGIN option) 41
NOHEADING switch in SPOOL 82
NOLOAD switch in SNAIL 60, 67, 72
NOMAIL (LOGIN option) 41
NOMAIL switch in MAIL 95
non-displays 41
NONARROW switch in SPOOL 82
NONOTE (LOGIN option) 41
NONUMBER switch in SPOOL 82
NONUMBERS switch in COPY 79
normal activation mode 17
normalize page printer 20
NOSAISEG switch in SNAIL 65, 72
NOSPACES switch in COPY 79
NOTABS (LOGIN option) 41
NOTICE filehack in COPY 77
NOTICE.TXT file 41, 99, 103, 112
NOTITLE switch in SPOOL 82
NOWARN switch in SPOOL 82
NOXGP switch in XSPOOL 86
NS 41, 112
NS command 53
NS filehack in COPY 77
NTNODE switch in XSPOOL 86
NUL device 8
null job 38, 49
null-time 19
NULQ (job queue) 19
NUMBER switch in SPOOL 82
number, line see line numbers
NVNODE switch in XSPOOL 86
OCTAL switch in SPOOL 82
ODD switch in COPY 79
OFFSET switch in COPY 79
old mode (UDP) 37
operator 39
OPTIMIZE switch in COPY 79
OPTION filehack in COPY 77
OPTION.TXT file 41, 42, 112
OTN command 53, 122
OUTGO switch in MAIL 95
OUTGO.MSG file 92, 112
output buffer 18
P switch in E 56
page printer 20, 26
Page-Seconds 38
pages 13
paging, telephone 27
PALX 55
PALX switch in SNAIL 60, 72
paper tape 8
paper, pieces of 20
Partial font loading 86
PASCAL 55
PASCAL switch in SNAIL 60, 72
password 41, 48
PAUSE switch in COPY 79
PDP-10 4, 5, 15
PDP-10 console 8
PDP-11 device 8
PDP-6 8
PGX pseudo-device (COPY) 78
phantom 36, 49, 54
physical device name see device name, physical
pieces of glass 20
pieces of paper 20
PJOB command 38
PL (in WHO display) 49
PLAN command 104
plan file 52, 77, 104, 112
PLAN filehack in COPY 77, 104
PLN filehack in COPY 77, 104
plotter 8
PLT device 8
PMAR switch in XSPOOL 86
PORNO (LOGIN option) 41
POX 55
POX command 58
PPN 5, 8, 9, 19, 36, 38, 39, 41, 42, 52, 54
PPN (in WHO display) 49
PPN (in WHO line) 19
PPN, disk see alias
PPPN command 38
PREFIX, non-display 29
PREPARE command 60
PRINT command 44, 80
printer, line 8, 37, 44, 80, 82, 131
private device 37
privilege, file access 41
privileged commands 54
PROCESS command 59
PROCESSOR switch in SNAIL 67, 72
programmer name 5, 19, 39, 45, 52
programs, display 20, 26
programs, system 5, 32, 33, 40
programs, system information 7, 12
project name 5
project-programmer name see PPN
protected mail files 99
protection 41
PROTECTION switch in COPY 79
PS (in TIME command) 38
pseudo-mailbox 99
pseudo-teletype see PTY
PTP device 8
PTR device 8
PTTY command 38
PTY 8, 42, 49
PTYJOB 123
PUB 55, 142
PUB command 58
public device 37
PUMPKIN command 113
QMAINT (LOGIN option) 41
QSPOOL 87
QSPOOL command 44
QSPOOL switch in SPOOL 82
queue 52
QUEUE (in WHO display) 49
QUEUE (in WHO line) 19
queue names 19
QUEUE switch in MAIL 95
queued local mail 99
queued mail 95, 98, 99, 105
queued mail, deleting 111
QUIET switch in COPY 79
R (in WHO line) 19
R command 33, 40
R switch for editors 56
RAID 34, 35, 55, 65, 142
RAID switch in SNAIL 65, 72
RCOR (in WHO line) 19
RCV 112
READ command 12, 56
REASSIGN command 37
RECOPY switch in SPOOL 82
records 8
REENTER command 35
REFERENCED switch in COPY 79
refresh 20
REL files 8
REL switch in SNAIL 60, 72
reloading 138
relocatable binary 8, 11
REMIND command 101
reminders, deleting 111
RENAME command 44, 80
RENAME switch in COPY 79
repeat escape command 18
REPEAT switch in SPOOL 82
RER command 59
RERUN command 59
RESET 20, 33, 34
RESET command 39
RESOURCES command 38
responsible keyboard 23
RESTORE command 113
retrieve last line 16
RETRY command 105
RETURN see carriage return
RETURN key 15, 16
REWIND command 113
RMAR switch in XSPOOL 86
RP (in WHO line) 19
RPG 42
RPG filehack in COPY 77
RPGSAV (LOGIN option) 41
RPGSAV (LOGOUT option) 42
RSL command 53, 114
RTIME 19
RTJ device 8
RUBOUT, non-display 29
RUN (LOGIN option) 41
RUN command 33
run time 38, 49, 52
running programs 11, 33
RUNQ (job queue) 19
RUNTIME (in WHO line) 19
runtime, incremental 19
S1 switch in SNAIL 60, 72
SAI files 8
SAIL 5, 55, 142
SAIL switch in SNAIL 60, 72
SAM device 8
SAVE command 34
SAVE switch in COPY 79
SAVE switch in SNAIL 65, 72
SAVED.MSG file 112
scanner, keyboard see keyboard scanner
scrolling 20
SD command 53, 122
SEARCH switch in COPY 79
SEG (in WHO display) 49
segment, lower see lower segment
segment, upper see upper segment
segments 13
SEGNAM (in WHO line) 19
select audio channel 27
select channel 24
select piece of glass 26
SEND command 100
SEND switch in MAIL 95
service level 38, 49, 53
SETPR2 141
SETUWP command 34
SHIFT key, non-display 29
SHIFT keys 6, 15
SHIFT LOCK key 6, 15, 18
SIX device 8
SIZE (in WHO display) 49
SIZE (in WHO line) 19
SL (in WHO display) 49
SLEEP 19
SLEVEL command 38
SNAIL 10, 43, 55
SNDMSG see MAIL program
SNK (job queue) 19
SOS 10, 55, 56, 142
SOS representation 29
Spacewar 5
spacewar module 19, 49
special activation mode 17
SPEED (in TTY command) 31
SPOOL command 44, 82
SPOOL switch in COPY 79
spoolers 44, 78
spying 25
SSAVE command 34
Stanford ASCII 15
START command 35
starting programs 35
status, system 19
STOP (job queue) 19
stop typeout 18, 29
storage, core 5, 13, 19, 136
SUBJECT switch in MAIL 95
SUPDUP 126
SUPDUP command 53, 122
suspend typeout 18, 29
Suspended XGP listings 86
SW1 (in WHO display) 49
SW2 (in WHO display) 49
switch, audio see audio switch
switch, video see video switch
SYS device 8, 33, 37
SYSTAT (LOGIN option) 41
SYSTAT command 52
system messages 99, 103
system programs 33
system WHO line see WHO line
TAB 16, 29
TAB key 15
TABS (in TTY command) 31
TABS (LOGIN option) 41
tabs, hardware 31
TALK command 39
talk ring 39
tape, magnetic see magnetic tape
tape, paper 8
TCOR (in WHO line) 19
TECO 10, 55, 56, 142
TECO command 56
Teletypes 6
TELNET 53, 122, 123
TELNET command 53, 122, 123
TEMPC (in WHO line) 19
TEMPF (in WHO line) 19
terminal 7, 8, 31
terminals, display 6, 15, 20, 49
terminals, non-display 10
TEST command 53
text nodes 86
TGAG (in TTY command) 31
tick 19, 49
TIME (in TTY command) 31
TIME (in WHO display) 49
TIME (in WHO line) 19
TIME command 38
TIME switch in COPY 79
TIME switch in MAIL 95, 96
timesharing 4
TITLE switch in COPY 79
TITLE switch in SPOOL 82
TLIST command 113
TMAR switch in XSPOOL 86
TMP 42
TMPCOR 42, 47
TN command 53, 122, 123
TOP key 6, 15
TPL pseudo-device (COPY) 78
TQ (job queue) 19
TRANSFER command 44, 80
TRY command 60
TTY (in WHO line) 19
TTY command 31
TTY device see terminals
TTYUUO 29
TURKEY command 113
TV device 8
TV, lounge 24
TYPE command 44, 80
type WHO line 30
typeahead 7
UCOR (in WHO line) 19
UDP 8, 37, 38, 48, 78, 135
UDPUFD command 53
UFD 8
UFD command 53
UFD protection 79
UFDPRO switch in COPY 79
UNDELETE command 53
UNHIDE (LOGIN option) 41
UNPROTECT command 53
UNSPOOL 88
UNSPOOL command 44
UPDATE (in TTY command) 31
UPG privilege 54
upper segment 13, 19, 34, 49
user disk pack see UDP
User File Directory 8
user mode 7, 35
user, authorized 9
USETI switch in XSPOOL 86
UTPCLR 48
UUOs 4, 5
vector 6
vector nodes 86
vertical position 20
vertical tab 15
video switch 22
virtual terminal 22
volleyball players 92
VT 29
VT key 15
Wait (in TIME command) 38
WAIT switch in COPY 79
wait time 19
WARN switch in SPOOL 82
whams 114
WHEN command 52
WHERE command 12, 52
WHERE switch in MAIL 95
WHO (in TTY command) 31
WHO (LOGIN option) 41
WHO command 7, 12, 49
WHO line 6, 19, 31, 36, 38, 41, 49
WIDTH (in TTY command) 31
WIDTH (LOGIN option) 41
word delete (non-display escape) 30
WRITER switch in COPY 79
XDIGEST (LOGIN option) 41
Xerox Graphics Printer see XGP
XFACT.TXT file 82
XGP 8, 44, 82, 86, 134
XGP switch in XSPOOL 86
XGPLIST command 44, 80
XLINE switch in XSPOOL 86
XMAIL (LOGIN option) 41
XP (in WHO line) 19
XSPOOL command 44, 82, 86
XTIME 19, 31
XTIME (in WHO line) 19
YESMAIL switch in MAIL 95
ZERO command 48
↑← C (non-display escape) 30
↑← D (non-display escape) 30
↑← F (non-display escape) 30
↑← H (non-display escape) 30
↑← I (non-display escape) 30
↑← L (non-display escape) 30
↑← M (non-display escape) 30
↑← N (non-display escape) 30
↑← n V (non-display escape) 30
↑← R (non-display escape) 30
↑← W (non-display escape) 30
↑← X (non-display escape) 30
↑← Z (non-display escape) 30
↑← ↑W (non-display escape) 30